O processo de reindexação interna do AEM coleta dados do repositório e os armazena em índices Oak para oferecer suporte à consulta eficiente do conteúdo. Em circunstâncias excepcionais, o processo pode ficar lento ou até travado. Esta página atua como um guia de solução de problemas para ajudar a identificar se a indexação está lenta, encontrar a causa e resolver o problema.
É importante distinguir entre a reindexação, que leva um tempo inadequadamente longo, e a reindexação, que leva um longo tempo, pois está indexando grandes quantidades de conteúdo. Por exemplo, o tempo necessário para indexar o conteúdo é dimensionado com a quantidade de conteúdo, portanto, repositórios de produção grandes demoram mais para reindexar do que repositórios de desenvolvimento pequenos.
Consulte a Práticas recomendadas em consultas e indexação para obter informações adicionais sobre quando e como reindexar o conteúdo.
A indexação lenta da detecção inicial requer a revisão do IndexStats
MBeans JMX. Na instância afetada do AEM, faça o seguinte:
Abra o Console da Web e clique na guia JMX ou acesse https://<host>:<port>/system/console/jmx (por exemplo, http://localhost:4502/system/console/jmx).
Navegue até a IndexStats
Mbeans.
Abra o IndexStats
MBeans para " async
" e " fulltext-async
".
Para ambos os MBeans, verifique se Concluído carimbo de data e hora e LastIndexTime o carimbo de data e hora está a menos de 45 minutos da hora atual.
Para qualquer MBean, se o valor de tempo (Concluído ou HoraÚltimaIndexação) for maior que 45 minutos a partir da hora atual, então o trabalho de índice estará falhando ou demorando muito. Esse problema faz com que os índices assíncronos fiquem obsoletos.
Um desligamento forçado faz com que o AEM suspenda a indexação assíncrona por até 30 minutos após a reinicialização. E, normalmente, leva mais 15 minutos para concluir a primeira passagem de reindexação, para um total de cerca de 45 minutos (vinculando-se ao Detecção inicial período de 45 minutos). Se a indexação for pausada após um desligamento forçado:
Primeiro, determine se a instância do AEM foi desligada de maneira forçada (o processo AEM foi interrompido à força ou ocorreu uma falha de energia) e mais tarde reiniciada.
Se o desligamento forçado ocorrer, após a reinicialização, o AEM suspende automaticamente a reindexação por até 30 minutos.
Aguarde aproximadamente 45 minutos para que o AEM retome as operações normais de indexação assíncrona.
Para o AEM 6.1, verifique se AEM 6.1 CFP 11 O está instalado.
Em circunstâncias excepcionais, o pool de threads usado para gerenciar a indexação assíncrona pode ficar sobrecarregado. Para isolar o processo de indexação, um pool de threads pode ser configurado para impedir que outro trabalho do AEM interfira na capacidade do Oak de indexar o conteúdo em tempo hábil. Nesses casos, faça o seguinte:
Defina um novo pool de threads isolado para o Apache Sling Scheduler usar para indexação assíncrona:
Verifique se o novo pool de threads do Apache Sling Scheduler está registrado e é exibido no console da Web Status do Apache Sling Scheduler.
Navegue até o console da Web AEM OSGi>Status>Sling Scheduler ou acesse https://<host>:<port>/system/console/status-slingscheduler (por exemplo, http://localhost:4502/system/console/status-slingscheduler)
Verifique se as seguintes entradas de pool existem:
Se muitas alterações e confirmações forem feitas no repositório em um curto período de tempo, a indexação poderá ser atrasada devido a uma fila de observação cheia. Primeiro, determine se a fila de observação está cheia:
Vá para o Console da Web e clique na guia JMX ou acesse https://<host>:<port>/system/console/jmx (por exemplo, http://localhost:4502/system/console/jmx)
Abra o MBean de estatísticas do repositório Oak e determine se há ObservationQueueMaxLength
for maior que 10.000.
per second
seção) para verificar se o ObservationQueueMaxLength
Os segundos da métrica são 0.missRate
para o DocChildren
cache no Consolidated Cache
MBean de estatísticas.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 de documentos.A reindexação pode ser considerada "completamente paralisada" sob duas condições:
A reindexação é lenta, a ponto de não ser relatado nenhum progresso significativo nos arquivos de log em relação ao número de nós percorridos.
A reindexação fica presa em um loop infinito se exceções repetidas aparecerem nos arquivos de log (por exemplo, OutOfMemoryException
) na thread de indexação. A repetição de uma ou mais exceções idênticas no log indica que o Oak tenta indexar a mesma coisa repetidamente, mas falha no mesmo problema.
Para identificar e corrigir um processo de reindexação paralisado, faça o seguinte:
Para identificar a causa da indexação paralisada, as seguintes informações devem ser coletadas:
Colete 5 minutos de despejo de thread, um despejo de thread a cada 2 segundos.
Definir nível DEBUG e logs para os anexadores.
Coletar dados do modo assíncrono IndexStats
MBean:
Navegue até AEM OSGi Web Console>Main>JMX>IndexStat>async
Uso modo de console do oak-run.jar para coletar os detalhes do que existe no * /:async
* nó.
Colete uma lista de pontos de verificação do repositório usando o CheckpointManager
MBean:
AEM OSGi Web Console>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) por meio do async, async-reindex
e f ulltext-async
faixas de indexação ( 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, considere o seguinte:
PropertyIndexAsyncReindexMBean
.Para interromper com segurança a reindexação, siga estas etapas:
Identifique o MBean IndexStats que controla a faixa de reindexação que deve ser interrompida.
Navegue até o MBean IndexStats apropriado por meio do console JMX, acessando AEM OSGi Web Console>Main>JMX ou https://<host>:<port>/system/console/jmx (por exemplo, http://localhost:4502/system/console/jmx)
Abra o MBean IndexStats com base na faixa de reindexação que você deseja parar ( async
, async-reindex
ou fulltext-async
)
async
, async-reindex
ou fulltext-async
.Chame o abortAndPause()
no comando apropriado IndexStats
MBean.
Marque a definição do índice Oak apropriadamente para evitar a retomada da reindexação quando a faixa de indexação for retomada.
Ao reindexar um existente índice, defina a propriedade reindex como false
/oak:index/someExistingIndex@reindex=false
Ou então, para um novo índice:
Defina a propriedade type como disabled
/oak:index/someNewIndex@type=disabled
ou remova a definição do índice totalmente
Confirmar as alterações no repositório ao concluir.
Por fim, retome a indexação assíncrona na faixa de indexação anulada.
IndexStats
O MBean que emitiu o abortAndPause()
na Etapa 2, chame o resume()
comando.É melhor reindexar durante períodos de silêncio (por exemplo, não durante uma grande assimilação de conteúdo) e, idealmente, durante as janelas de manutenção, quando a carga do AEM é conhecida e controlada. Além disso, certifique-se de que a reindexação não ocorra durante outras atividades de manutenção.