Solução de problemas de índices Oak troubleshooting-oak-indexes
Reindexação lenta slow-re-indexing
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 tempo longo, 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.
Detecção inicial initial-detection
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.
A indexação está pausada após um desligamento forçado indexing-is-paused-after-a-forced-shutdown
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.
- Registro de AEM pode ser revista para este efeito.
-
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.
Pool de threads sobrecarregado thread-pool-overloaded
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:
- Na instância de AEM afetada, navegue até AEM OSGi Web Console>OSGi>Configuration>Apache Sling Scheduler ou acesse https://<host>:<port>/system/console/configMgr (por exemplo, http://localhost:4502/system/console/configMgr)
- Adicione uma entrada ao campo "Pools de threads permitidos" com o valor de "oak".
- Para salvar as alterações, clique Salvar no canto inferior direito.
-
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:
- ApacheSlingoak
- ApacheSlingDefault
-
A fila de observação está cheia observation-queue-is-full
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.- Em operações normais, esse valor máximo deve sempre ser reduzido a zero (especialmente no
per second
seção) para verificar se oObservationQueueMaxLength
Os segundos da métrica são 0. - Se os valores forem 10.000 ou mais e aumentarem constantemente, isso indicará que pelo menos uma (possivelmente mais) fila não poderá ser processada tão rápido quanto ocorrerem novas alterações (confirmações).
- Cada fila de observação tem um limite (10.000 por padrão) e, se a fila atingir esse limite, seu processamento será degradado.
- Ao usar MongoMK, à medida que os comprimentos de fila crescem, o desempenho do cache interno do Oak diminui. Esta correlação pode ser observada num
missRate
para oDocChildren
cache noConsolidated Cache
MBean de estatísticas.
- Em operações normais, esse valor máximo deve sempre ser reduzido a zero (especialmente no
-
Para evitar exceder os limites aceitáveis da fila de observação, recomenda-se:
- Diminua a taxa constante de confirmações. Pequenos picos nas confirmações são aceitáveis, mas a taxa constante deve ser reduzida.
- Aumentar o tamanho do
DiffCache
conforme descrito em Dicas de ajuste de desempenho > Ajuste de armazenamento Mongo > Tamanho do cache de documentos.
Identificação e correção de um processo de reindexação paralisado identifying-and-remediating-a-stuck-re-indexing-process
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.
- Por exemplo, se não houver mensagens no período de uma hora ou se o progresso estiver tão lento que leve uma semana ou mais para ser concluído.
-
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.
- org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate
- org.apache.jackrabbit.oak.plugins.index.IndexUpdate
-
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.
- Reiniciar o AEM pode resolver o problema se houver alta carga simultânea (estouro da fila de observação ou algo semelhante).
- Se uma reinicialização não resolver o problema, abra um problema com Atendimento ao cliente Adobe e forneça todas as informações coletadas na Etapa 1.
Anular com segurança a reindexação assíncrona safely-aborting-asynchronous-re-indexing
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:
- A reindexação de índices de propriedades Lucene e Lucene pode ser anulada, pois eles são naturalmente assíncronos.
- A reindexação de índices de propriedades do Oak só poderá ser anulada se a reindexação tiver sido iniciada por meio de
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
oufulltext-async
)- Para identificar a faixa apropriada e, portanto, a instância MBean IndexStats, verifique a propriedade "async" dos índices Oak. A propriedade "async" contém o nome da faixa:
async
,async-reindex
oufulltext-async
. - A faixa também está disponível ao acessar o AEM Index Manager na coluna "Async". Para acessar o Gerenciador de índice, navegue até Operações>Diagnóstico>Gerenciador de índice.
- Para identificar a faixa apropriada e, portanto, a instância MBean IndexStats, verifique a propriedade "async" dos índices Oak. A propriedade "async" contém o nome da faixa:
-
-
Chame o
abortAndPause()
no comando apropriadoIndexStats
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.
- No
IndexStats
O MBean que emitiu oabortAndPause()
na Etapa 2, chame oresume()
comando.
- No
Como evitar a reindexação lenta preventing-slow-re-indexing
É 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.