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 MBeans IndexStats 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é o IndexStats Mbeans.

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

  4. Para ambos os MBeans, verifique se o carimbo de data e hora Done e o carimbo de data e hora LastIndexTime estão a menos de 45 minutos do tempo atual.

  5. Para MBean, se o valor de tempo (Done ou LastIndexedTime) for maior que 45 minutos do tempo atual, o trabalho de índice falhará ou demorará 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, por um total de aproximadamente 45 minutos (retornando ao período de tempo de 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.

  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 Apache Sling 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 da 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 ObservationQueueMaxLength valor é maior que 10.000.

    • Em operações normais, esse valor máximo sempre deve ser reduzido para zero (especialmente na per second seção) para verificar se as métricas de segundos ObservationQueueMaxLengthdo 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 aumento missRate para o DocChildren cache no MBean de Consolidated Cache estatísticas.
  3. Para evitar exceder os limites aceitáveis da fila de observação, recomenda-se:

    • Diminua a taxa constante de autorizações. Picos curtos de compromissos são aceitáveis, mas a taxa constante deve ser reduzida.
    • Aumente o tamanho do cache, conforme descrito em DiffCache Dicas de ajuste de desempenho > Ajuste do Armazenamento mongo > Tamanho do cache do Documento.

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 é 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:

  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 no 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 (parada antes de ser concluída) por meio das vias async, async-reindexe ulltext-async de indexação ( IndexStats Mbean). Para obter mais informações, consulte também a documentação do Apache Oak sobre 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 do 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 você deseja interromper ( async, async-reindexou 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-reindexou 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 abortAndPause() comando no IndexStats MBean 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 novo índice:

      • 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 IndexStats MBean que emitiu o abortAndPause() comando na Etapa 2, chame o resume()comando.

Impedir 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