Solução de problemas de índices Oak

Reindexação lenta

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.

Detecção inicial

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:

  1. 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).

  2. Navegue até IndexStats Mbeans.

  3. Abra os MBeans IndexStats para " async" e " fulltext-async".

  4. 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.

  5. 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.

A indexação é pausada após um encerramento forçado

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:

  1. 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.

    • AEM registro pode ser revisto para esse efeito.
  2. Se o encerramento forçado tiver ocorrido, após a reinicialização, AEM automaticamente suspende a reindexação por até 30 minutos.

  3. Aguarde aproximadamente 45 minutos para AEM retomar as operações normais de indexação assíncrona.

Pool de threads sobrecarregado

OBSERVAÇÃO

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:

  1. Defina um novo pool de threads isolado para o Scheduler Apache Sling a ser usado para indexação assíncrona:

    • Na instância AEM afetada, navegue até AEM Console Web OSGi>OSGi>Configuração>Scheduler Sling do Apache ou vá para https://<host>:<porta>/system/console/configMgr (por exemplo, http://localhost:4502/system/console/configMgr)
    • Adicione uma entrada ao campo "Pools de threads permitidos" com o valor de "carvalho".
    • Clique em Salvar na parte inferior direita para salvar as alterações.

    chlimage_1-119

  2. 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:

      • ApacheSlingoak
      • ApacheSlingdefault

    chlimage_1-120

A fila de observação está cheia

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:

  1. 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)

  2. Abra o MBean de estatísticas do repositório Oak e determine se qualquer valor ObservationQueueMaxLength é maior que 10.000.

    • Em operações normais, esse valor máximo sempre deve reduzir para zero (especialmente na seção per second) para verificar se as métricas de ObservationQueueMaxLength segundos são 0.
    • Se os valores forem 10.000 ou mais e aumentarem continuamente, isso indica que pelo menos uma (possivelmente mais) filas não pode ser processada tão rápido quanto novas alterações (confirmações) ocorrerem.
    • Cada fila de observação tem um limite (10.000 por padrão) e se a fila atingir esse limite, seu processamento diminui.
    • Ao usar MongoMK, à medida que os comprimentos da fila crescem, o desempenho interno do cache Oak diminui. Essa correlação pode ser vista em um missRate maior para o cache DocChildren no MBean de estatísticas Consolidated Cache.
  3. Para evitar exceder os limites aceitáveis da fila de observação, recomenda-se:

Como identificar e corrigir um processo de reindexação travado

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.

    • Por exemplo, se não houver mensagens durante uma hora, ou se o progresso for tão lento que levará uma semana ou mais para ser concluído.
  • A reindexação fica presa 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:

  1. Para identificar a causa da indexação travada, as seguintes informações devem ser coletadas:

  2. Depois de coletar todas as informações descritas na Etapa 1, reinicie o AEM.

    • A reinicialização do AEM pode resolver o problema no caso de uma carga alta simultânea (sobrefluxo da fila de observação ou algo semelhante).
    • Se uma reinicialização não resolver o problema, abra um problema com o Atendimento ao cliente do Adobe e forneça todas as informações coletadas na Etapa 1.

Interrompendo com segurança a reindexação assíncrona

A reindexação pode ser abortada com segurança (interrompida antes de ser concluída) pelas vias de indexação async, async-reindexe 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:

  • A reindexação dos Índices de propriedades Lucene e Lucene pode ser abortada, pois eles são naturalmente assícronos.
  • A reindexação de Índices de Propriedades Oak só pode ser abortada se a reindexação tiver sido iniciada por meio de PropertyIndexAsyncReindexMBean.

Para suspender a reindexação com segurança, siga estas etapas:

  1. 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)

      • Para identificar a faixa apropriada e, portanto, a instância MBean IndexStats, verifique a propriedade "async" dos Índices Oak. A propriedade "async" conterá o nome da faixa: async, async-reindex ou fulltext-async.
      • A faixa também está disponível acessando AEM Gerenciador de índice na coluna "Assíncrono". Para acessar o Gerenciador de índice, navegue até Operations>Diagnosis>Gerenciador de índice.

    chlimage_1-121

  2. Chame o comando abortAndPause() no MBean IndexStats apropriado.

  3. 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.

  4. Finalmente, retome a indexação assíncrona na linha de indexação abortada.

    • No MBean IndexStats que emitiu o comando abortAndPause() na Etapa 2, execute o comando resume().

Impedindo a reindexação lenta

É 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.

Nesta página