AEM processo interno de reindexação coleta dados do repositório e os armazena em índices Oak para oferecer suporte à consulta de conteúdo do executor. Em circunstâncias excepcionais, o processo pode tornar-se lento ou mesmo emperrado. Esta página atua como um guia de solução de problemas para ajudar a identificar se a indexação está lenta, localizar a causa e resolver o problema.
É importante distinguir entre reindexação que leva um tempo inadequadamente longo, e reindexação que leva um longo tempo porque indexa grandes quantidades de conteúdo. Por exemplo, o tempo necessário para indexar as escalas de conteúdo com a quantidade de conteúdo, de modo que os repositórios de produção grandes levarão mais tempo para reindexar do que os pequenos repositórios de desenvolvimento.
Consulte as Práticas recomendadas para Query e indexação para obter mais informações sobre quando e como indexar novamente o conteúdo.
A indexação lenta da detecção inicial requer a revisão dos IndexStats
MBeans JMX. Na instância AEM afetada, faça o seguinte:
Abra o Console da Web e clique na guia JMX ou vá para https://<host>:<porta>/system/console/jmx (por exemplo, http://localhost:4502/system/console/jmx).
Navegue até IndexStats
Mbeans.
Abra os MBeans IndexStats
para " async
" e " fulltext-async
".
Para ambos os MBeans, verifique se o carimbo de data e hora Done e LastIndexTime são inferiores a 45 minutos a partir do momento atual.
Para MBean, se o valor de hora (Done ou LastIndexedTime) for maior que 45 minutos a partir do tempo atual, o trabalho de índice está falhando ou demorando muito. Isso faz com que os índices assíncronos sejam obsoletos.
Um desligamento forçado resulta em AEM suspendendo a indexação assíncrona por até 30 minutos após a reinicialização, e geralmente requer mais 15 minutos para concluir a primeira reindexação de passagem, por um total de aproximadamente 45 minutos (ligando de volta ao período Detecção Inicial de 45 minutos). No evento, você suspeita que a indexação esteja pausada após um encerramento forçado:
Em primeiro lugar, determine se a instância AEM foi fechada de forma forçada (o processo de AEM foi violado com força, ou ocorreu uma falha de energia) e, em seguida, reiniciado.
Se o encerramento forçado tiver ocorrido, após a reinicialização, AEM automaticamente suspende a reindexação por até 30 minutos.
Aguarde aproximadamente 45 minutos para AEM retomar as operações normais de indexação assíncrona.
Para AEM 6.1, verifique se AEM 6.1 CFP 11 está instalado.
Em circunstâncias excepcionais, o pool de threads usado para gerenciar a indexação assícrona pode ficar sobrecarregado. Para isolar o processo de indexação, um pool de threads pode ser configurado para impedir que outros trabalhos AEM interfiram na capacidade do Oak de indexar conteúdo em tempo hábil. Para fazer isso, você deve:
Defina um novo pool de threads isolado para o Scheduler Apache Sling a ser usado para indexação assíncrona:
Verifique se o novo pool de threads do Scheduler Apache Sling está registrado e é exibido no console da Web Status do Scheduler Apache Sling.
Navegue até AEM console Web OSGi>Status>Scheduler Sling ou vá para https://<host>:<porta>/system/console/status-slingScheduler (por exemplo, http://localhost:4502/system/console/status-slingscheduler)
Verifique se as seguintes entradas de pool existem:
Se forem efetuadas demasiadas alterações e compromissos no repositório num curto espaço de tempo, a indexação pode ser atrasada devido a uma fila de observação completa. Primeiro, determinar se a fila de observação está cheia:
Vá para o Console da Web e clique na guia JMX ou vá para https://<host>:<porta>/system/console/jmx (por exemplo, http://localhost:4502/system/console/jmx)
Abra o MBean de estatísticas do repositório Oak e determine se qualquer valor ObservationQueueMaxLength
é maior que 10.000.
per second
) para verificar se as métricas de ObservationQueueMaxLength
segundos são 0.missRate
maior para o cache DocChildren
no MBean de estatísticas Consolidated Cache
.Para evitar exceder os limites aceitáveis da fila de observação, recomenda-se:
DiffCache
conforme descrito em Dicas de ajuste de desempenho > Ajuste de Armazenamento mongo > Tamanho do cache do Documento.A reindexação pode ser considerada como "completamente emperrada" sob duas condições:
A reindexação é muito lenta, a ponto de não ser reportado nenhum progresso significativo nos arquivos de registro em relação ao número de nós atravessados.
A reindexação é travada em um loop sem fim se exceções repetidas forem exibidas nos arquivos de log (por exemplo, OutOfMemoryException
) no thread de indexação. A repetição das mesmas exceções no registro indica que Oak tenta indexar a mesma coisa repetidamente, mas falha no mesmo problema.
Para identificar e corrigir um processo de reindexação travado, faça o seguinte:
Para identificar a causa da indexação travada, as seguintes informações devem ser coletadas:
Colete 5 minutos de despejo de thread, um despejo de thread a cada 2 segundos.
Defina o nível de DEBUG e os registros para os anexos.
Colete dados do MBean assíncrono IndexStats
:
Navegue até AEM Console Web OSGi>Main>JMX>IndexStat>async
Use o modo de console oak-run.jar para coletar os detalhes do que existe no nó * /:async
*.
Colete uma lista de pontos de verificação do repositório usando o MBean CheckpointManager
:
AEM Console Web OSGi>Main>JMX>CheckpointManager>listCheckpoints()
Depois de coletar todas as informações descritas na Etapa 1, reinicie o AEM.
A reindexação pode ser abortada com segurança (interrompida antes de ser concluída) pelas vias de indexação async, async-reindex
e f ulltext-async
( IndexStats
Mbean). Para obter mais informações, consulte também a documentação do Apache Oak em Como abortar a reindexação. Além disso, ter em conta que:
PropertyIndexAsyncReindexMBean
.Para suspender a reindexação com segurança, siga estas etapas:
Identifique o MBean IndexStats que controla a linha de reindexação que precisa ser interrompida.
Navegue até o MBean IndexStats apropriado por meio do console JMX, indo até AEM Console Web OSGi>Main>JMX ou https://<host>:<porta>/system/console/jmx (por exemplo, http://localhost:4502/system/console/jmx)
Abra o MBean IndexStats com base na linha de reindexação que deseja interromper ( async
, async-reindex
ou fulltext-async
)
async
, async-reindex
ou fulltext-async
.Chame o comando abortAndPause()
no MBean IndexStats
apropriado.
Marque a definição do índice Oak apropriadamente para impedir a retomada da reindexação quando a linha de indexação for retomada.
Ao reindexar um índice existente, defina a propriedade reindex como false
/oak:index/someExistingIndex@reindex=false
Ou então, para um índice new:
Defina a propriedade type como disabled
/oak:index/someNewIndex@type=disabled
ou remover a definição de índice totalmente
Confirme as alterações no repositório ao concluir.
Finalmente, retome a indexação assíncrona na linha de indexação abortada.
IndexStats
que emitiu o comando abortAndPause()
na Etapa 2, execute o comando resume()
.É melhor reindexar durante períodos silenciosos (por exemplo, não durante uma grande assimilação de conteúdo) e idealmente durante janelas de manutenção quando AEM carregamento é conhecido e controlado. Além disso, verifique se a reindexação não ocorre durante outras atividades de manutenção.