Analyser les problèmes d’indexation AEM

Description

Environnement
Experience Manager

Problème/Symptômes
Comment résoudre tous les problèmes d’indexation courants ?

Résolution

Analyse des requêtes lentes

Accédez à Outils / Opérations / Tableau de bord / Diagnostic / Performances des requêtes pour afficher la liste des requêtes lentes.

Voir ce document pour plus d’informations sur l’analyse des requêtes lentes.

Dans les environnements hors production, le package d’outils ACS AEM peut être installé pour fournir un outil de requête explicatif pour un débogage plus poussé.

 Réindexer les index asynchrones

Remarque :

La réindexation ne résout généralement pas les problèmes de requête, tels que les requêtes ne renvoyant pas les bons résultats. En outre, la réindexation peut prendre un certain temps. La réindexation doit être évitée à moins qu’elle ne soit associée à une raison répertoriée dans cette section.


Comment réindexer un index asynchrone

  • Connectez-vous à votre instance AEM.
  • Ouvrez http://aemhost:port/crx/de/index.jsp
  • Accédez à la définition d’index sous /oak:index
  • Définissez une propriété booléenne reindex=true sur l’index à réindexer, puis enregistrez. Lorsque l’indexation démarre, un message de journal comme celui-ci s’affiche :

23.06.2015 14:26:23.070 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate La réindexation sera effectuée pour les index suivants : /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/principal, /oak:index/jcrFrozenMixinTypes

  • Lorsque la réindexation est en cours, l’attribut "status" de IndexStatsMBean aurait la valeur "running".

 23.06.2015 14:26:23.517 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate Réindexation convertie #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 Rapport d’indexation - /oak:index/counter*(708) - /oak:index/authorizables*(159) - /oak:index/cqPageLucene* 1913) - /oak:index/ntBaseLucene*(444) - /oak:index/cqTagLucene*(512) - /oak:index/workflowDataLucene*(116)

  • Vous pouvez confirmer que l’indexation s’est terminée en vérifiant votre noeud de définition d’index, la propriété reindexCount doit avoir été incrémentée et la valeur booléenne de réindexation doit être définie sur "false".

    Dans le fichier journal, si l’indexation s’est terminée correctement, l’entrée suivante s’affiche.

23.06.2015 14:28:52.009 *INFO* pool-8-thread-1 org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Réindexation (async) terminée pour les index : /oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene* 512), /oak:index/workflowDataLucene*(116) dans la version 30.36 s

  • Si la réindexation ne se termine pas et a fait l’objet d’une boucle, consultez la section ci-dessous intitulée Analyse de la réindexation ayant échoué.

L’activité d’index asynchrone peut être identifiée au niveau INFO en accédant à org.apache.jackrabbit.plugins.index.IndexUpdate et org.apache.jackrabbit.plugins.index.AsyncIndexUpdate.
 Problèmes de performances de l’indexation asynchrone

  • Activez la journalisation pour valider la durée :

Niveau TRACE (uniquement dans Oak 1.0.17 ou version ultérieure) :

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

Niveau DEBUG :

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

Des journaux comme celui-ci seront générés, affichant la durée de l’indexation :

09.07.2015 08:13:38.401 *TRACE* 192.168.193.1 1436444018387 POST /content/dam/site/test.createasset.html HTTP/1.1 org.apache.jackrabbit.oak.jcr.operations.writes session-101777 Ajouter un noeud /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.html HTTP/1.1 org.apache.jackrabbit.oak.jcr.operations.writes session-101777 save 09.07.2015 08:13:42.823 *DEBUG* pool-9-thread-1 org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Exécution de la tâche d’index en arrière-plan asynchrone 09.07.2015 08:13:42.963 *TRACE* pool-9-thread-1 org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor /oak:index/lucene Le document indexé pour /content/dam/site/test/jackrabbit-oak7.png/jcr:content/related est documenté, indexé,omitNorms,indexOptions=DOCS_ONLY:path:/content/dam/site/test/jackrabbit-oak7.png/jcr:content/related indexé,tokenized:fulltext:09.07.2015 08 connexes:13:43.579 *DEBUG* pool-9-thread-1 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Rapport d’indexation

  • /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 trouvé à jour. La réouverture de IndexNode a duré 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 Copié 0 fichier totalisant 0 B a pris 1465 ms 09.07.2015 08:13:45.248 *TRACE* oak-lucene-0 org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier /oak:index/lucene ouvrant uniquement des segments de fichiers distants.gen 09.07.2015 08:13:45.361 *TRACE* oak-lucene-0 org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf /oak:index/lucene IndexIndex a été mis à jour. La réouverture de IndexNode a pris 1581ms

  • Prenez une série de vidages de threads et recherchez le thread contenant AsyncIndexUpdate dans la pile pour voir où la plupart du temps d’indexation est passé ou si l’indexation est en attente sur d’autres threads. Pour obtenir images mémoire, consultez cet article.
  • Définissez la propriété booléenne saveDirectoryListing=true (uniquement si vous utilisez Oak 1.0.16, si une version ultérieure n’est pas nécessaire) et définissez la propriété excludedPaths=/var, /etc/workflow/instances, /jcr:system sur l’index OOTB /oak:index/lucene pour l’optimiser.
  • Cliquez sur Tout enregistrer.
  • Lorsque vous créez des index de propriété Lucene personnalisés, assurez-vous de définir saveDirectoryListing=true (booléen) en cas d’utilisation d’Oak 1.0.16 et de définir la propriété includedPaths (String) pour limiter votre index à indexer certains chemins.

Accéder à cette URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService "Copier à la lecture", "Copier à l’écriture" (utilisable uniquement dans Oak 1.0.18 et versions ultérieures) et "Prérécupération des fichiers d’index" (uniquement dans Oak 1.0.18 et versions ultérieures)

Analyse de la réindexation ayant échoué

  • Lorsque l’indexation asynchrone échoue, puis que vous cochez l’interface utilisateur JMX des statistiques de l’indexeur asynchrone (lien ci-dessous), vous constatez que LastIndexedTime est une date et une heure anciennes :

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

  • En outre, en cas d’échec de la réindexation, elle est placée dans une boucle comme celle-ci :

08.01.2015 01:22:04.474 *INFO* pool-9-thread-2 org.apache.jackrabbit.oak.plugins.index.IndexUpdate La réindexation sera effectuée pour les index suivants /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified08.01.2015 01:52:08.365 *INFO* pool-9-thread-5 org.apache.jackrabbit.oak.plugins.index.IndexUpdate La réindexation sera effectuée pour les index suivants /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified08.01.2015 09:33:23.306 *INFO* pool-9-thread-5 org.apache.jackrabbit.oak.plugins.index.IndexUpdate La réindexation sera effectuée pour les index suivants /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified

  • Si cela s’affiche, vous devez activer la journalisation du niveau de débogage pour org.apache.jackrabbit.oak.plugins.index

  • La prochaine fois que l’indexation effectue une boucle avec le message du journal au-dessus d’un message du journal de débogage, il donnera plus de détails sur les raisons de l’échec de l’indexation.  Vous pouvez ensuite résoudre le problème, qu’il s’agisse d’un nœud corrompu, d’un blob manquant ou d’un autre problème.

Sur cette page