Analizar los problemas de indexación de AEM

Descripción

Entorno
Experience Manager

Problema/Síntomas
¿Cómo solucionar todos los problemas comunes de indexación?

Resolución

Análisis de consultas lentas

Accediendo a Herramientas / Operaciones / Tablero / Diagnóstico / Rendimiento de consulta mostrará la lista de consultas lentas.

Consulte este documento para obtener detalles sobre el análisis de las consultas lentas.

En los entornos que no son de producción, se puede instalar el paquete de herramientas AEM de ACS para proporcionar una herramienta de consulta explicativa para una mayor depuración.

 Reindexación de índices asíncronos

Nota:

la reindexación no suele resolver los problemas de las consultas, como las que no devuelven los resultados correctos. Además, la reindexación puede llevar mucho tiempo y debe evitarse a no ser que esté cubierta por una razón que aparezca allí.


Cómo reindexar un índice asíncrono

  • Inicie sesión en su instancia de AEM
  • Abra http://aemhost:port/crx/de/index.jsp
  • Vaya a la definición de índice en /oak:index
  • Establezca una propiedad booleana reindex=true en el índice para reindexar y, a continuación, guarde. Cuando se inicie la indexación, verá un mensaje de registro como el siguiente

23.6.2015 14:26:23.070 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate La reindexación se realizará para los siguientes índices: /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes

  • Mientras la reindexación está en curso, el atributo 'status' de IndexStatsMBean tendría el valor 'running'.

 23.6.2015 14:26:23.517 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexación recorrida #10000 /jcr:system/jcr:versionStorage/c8/5f…23.06.2015 14:28:51.999 *INFO* pool-8-thread-1 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Informe de indexación - /oak:index/counter*(708) - /oak:index/authorizables*(159) - /oak:index/cqPageLucene* (1913) - /oak:index/ntBaseLucene*(444) - /oak:index/cqTagLucene*(512) - /oak:index/workflowDataLucene*(116)

  • Puede confirmar que la indexación completada comprobando el nodo de definición de índice, la propiedad reindexCount debe haberse incrementado y el valor booleano reindex debe establecerse en "false"

    En el archivo de registro, si la indexación se ha completado con éxito, se mostrará la siguiente entrada

23.6.2015 14:28:52.009 *INFO* pool-8-thread-1 org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexación (async) completada para índices: /oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116) en 30,36 s

  • Si la reindexación no se completa y ha entrado en un bucle, consulte la siguiente sección titulada Análisis de la reindexación fallida.

La actividad del índice asíncrono se puede identificar a nivel INFO org.apache.jackrabbit.plugins.index.IndexUpdate y org.apache.jackrabbit.plugins.index.AsyncIndexUpdate.
 Problemas de rendimiento de la indexación asíncrona

  • Habilite el registro para validar el tiempo:

Nivel de TRACE (solo en Oak 1.0.17 o posterior):

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perf

Nivel de depuración:

org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate

org.apache.jackrabbit.oak.plugins.index.IndexUpdate

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor

org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext

org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier

Se deberían generar registros como este que muestren el tiempo de indexación:

09.07.2015 08:13:38.401 *TRACE* 192.168.193.1 1436444018387 POST /content/dam/site/test.createasset Adición del nodo /content/dam/site/test/jackrabbit-oak7.png 09.07.2015 08:13:38.583 *TRACE* 192.168.193.1 1436444018387 POST /content/dam/site/test.createasset HTTP/1.1 org.apache.jackrabbit.oak.jcr.operations.escribe session-10177 7 guardar 09.07.2015 08:13:42.823 *DEBUG* pool-9-thread-1 org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Ejecución de la tarea de índice de fondo asíncrona 09.07.2015 08:13:42.963 *TRACE* pool-9-thread-1 org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor /oak:index/lucene Documento indexado para /content/dam/site/test/jackrabbit-oak7.png/jcr:content/related está documentado, indexado,omitNorms,indexOptions=DOCS_ONLY:path:/content/dam/site/test/jackrabbit-oak7.png/jcr:content/related indexado,token:fulltext:relacionado 09.07.2015 08:13:43.579 *DEBUG* pool-9-thread-1 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Informe de indexación

  • /oak:index/siteDamIndex(2)
  • /oak:index/lucene(15)

09.07.2015 08:13:43.779 *TRACE* oak-lucene-0 org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf /oak:index/siteDamIndex encontrado para ser actualizado. La reapertura de IndexNode se produjo a los 150 ms 09.07.2015 08:13:45.248 *TRACE* oak-lucene-0 org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier.perf /oak:index/lucene Archivos copiados 0 B tomados 1465 ms 09.07.2015 08:13:45.248 *TRACE* oak-lucene-0 org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier /oak:index/lucene abriendo segmentos de archivo solo remoto.gen 09.07.2015 08:13:45.361 *TRACE* oak-lucene-0 org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf /oak:index/lucene Índice encontrado para ser actualizado. La reapertura de IndexNode tardó 1581 ms

  • Tome una serie de volcados de subprocesos y busque el subproceso que contiene AsyncIndexUpdate en la pila para ver dónde se pasa la mayor parte del tiempo de indexación o si la indexación está esperando en algunos otros subprocesos. Para tomar los volcados de hilos vea este artículo.
  • Establezca la propiedad booleana saveDirectoryListing=true (solo si utiliza Oak 1.0.16, si la versión posterior no es necesaria) y establezca la propiedad excludedPaths=/var, /etc/workflow/instances, /jcr:system en el índice /oak:index/lucene OOTB para optimizarlo.
  • Haga clic en "Guardar todos"
  • Cuando cree índices de propiedades de lucene personalizados, asegúrese de establecer saveDirectoryListing=true (booleano) si utiliza Oak 1.0.16 y establezca la propiedad includedPaths (String) para restringir su índice a solo indexar ciertas rutas.

Ir a esta URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService "Copiar en lectura", "Copiar en escritura" (solo para uso seguro en Oak 1.0.18 y posteriores) y "Recuperar previamente archivos de índice" (solo en Oak 1.0.18 y posteriores)

Análisis de la reindexación fallida

  • Cuando la indexación asíncrona falla, al comprobar las estadísticas del indexador asíncrono de la interfaz de usuario JMX (vínculo abajo), verá que LastIndexedTime es una fecha y hora antiguas:

http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D11%2Cname%3D"async"%2Ctype%3D"IndexStats"

  • Además, cuando la reindexación falla entra en un bucle como este:

08.01.2015 01:22:04.474 *INFO* pool-9-thread-2 org.apache.jackrabbit.oak.plugins.index.IndexUpdate La reindexación se realizará para los siguientes índices /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified08.01.2 015 01:52:08.365 *INFO* pool-9-thread-5 org.apache.jackrabbit.oak.plugins.index.IndexUpdate La reindexación se realizará para los siguientes índices /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified08.01.2 015 09:33:23.306 *INFO* pool-9-thread-5 org.apache.jackrabbit.oak.plugins.index.IndexUpdate La reindexación se realizará para los siguientes índices /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified

  • Si lo ve, debe habilitar el registro de nivel de depuración para org.apache.jackrabbit.oak.plugins.index

  • La próxima vez que la indexación haga un bucle con el mensaje de registro anterior, un mensaje de registro de depuración sobre este daría más detalles de por qué la indexación stá fallando.  Entonces podrá abordar el problema, ya sea un nodo corrupto, la falta de un blob u otro problema.

En esta página