Analyser les problèmes d’indexation AEM
Cet article fournit des conseils sur l’analyse des requêtes lentes, la réindexation des index asynchrones et la résolution des problèmes d’indexation dans Adobe Experience Manager.
Description description
Environnement
Adobe Experience Manager
Problème/Symptômes
Comment résoudre tous les problèmes d’indexation courants ?
Résolution resolution
Analyse des requêtes lentes
Accédez à Outils > Opérations > Tableau de bord > Diagnostic > Performance 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 Adobe Consulting Services (ACS) AEM peut être installé pour fournir un outil de requête explicatif pour un débogage plus poussé.
Réindexation des 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-le. Lorsque l’indexation démarre, un message de journal comme celui-ci s’affiche :
code language-none 23.06.2015 14:26:23.070 *INFO* [ FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [ /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes] -
Lorsque la réindexation est en cours, l’attribut status attribute d’IndexStatsMBean a la valeur running.
code language-none 23.06.2015 14:26:23.517 *INFO* [ FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing Traversed #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 Indexing report - /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 nœud de définition d’index ; la propriété reindexCount aurait dû être 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 :
code language-none 23.06.2015 14:28:52.009 *INFO* [ pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexing (async) completed for indexes: [ /oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116)] in 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 en échec .
-
L’activité d’index asynchrone peut être identifiée au niveau INFO en accédant à :
code language-none org.apache.jackrabbit.plugins.index.IndexUpdate, and 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) :
code language-none org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perfNiveau DEBUG :
code language-none 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.IndexCopierDes journaux comme ceux-ci seraient générés, affichant la durée de l’indexation :
code language-none 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] Adding node [ /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 Running background index task async 09.07.2015 08:13:42.963 *TRACE* [ pool-9-thread-1] org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor [ /oak:index/lucene] Indexed document for /content/dam/site/test/jackrabbit-oak7.png/jcr:content/related is Document<stored,indexed,omitNorms,indexOptions=DOCS_ONLY<:path:/content/dam/site/test/jackrabbit-oak7.png/jcr:content/related> indexed,tokenized<:fulltext:related>> 09.07.2015 08:13:43.579 *DEBUG* [ pool-9-thread-1] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report - /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] Index found to be updated. Reopening the IndexNode [ took 150ms] 09.07.2015 08:13:45.248 *TRACE* [ oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier.perf [ /oak:index/lucene] Copied 0 files totaling 0 B [ took 1465ms] 09.07.2015 08:13:45.248 *TRACE* [ oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier [ /oak:index/lucene] opening remote only file segments.gen 09.07.2015 08:13:45.361 *TRACE* [ oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf [ /oak:index/lucene] Index found to be updated. Reopening the IndexNode [ took 1581ms] -
Prenez une série d’images mémoire de threads et recherchez le thread contenant AsyncIndexUpdate dans la pile pour voir ce à quoi la plupart du temps d’indexation est consacré ou si l’indexation attend sur d’autres threads. Pour obtenir des 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é excludePaths=
[/var, /etc/workflow/instances, /jcr:system]sur l’index OOTB /oak:index/lucene pour l’optimiser. -
Cliquez sur Enregistrer tout .
-
Lorsque vous créez des index de propriété Lucene personnalisés, veillez à définir saveDirectoryListing=true (booléen) si vous utilisez Oak 1.0.16 et à définir la propriété includePaths (chaîne
[]) pour limiter votre index à certains chemins d’accès d’index uniquement. -
Accédez à cette URL
/system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderServiceCopier en lecture, Copier en écriture (utilisable uniquement dans Oak 1.0.18 et versions ultérieures) et « Prérécupérer 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, lorsque vous vérifiez l’interface utilisateur JMX des statistiques de l’indexer asynchrone (lien ci-dessous), vous constatez que LastIndexedTime est une date et une heure dépassées :
http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D11%2Cname%3D"async"%2Ctype%3D"IndexStats" -
Lorsque la réindexation échoue, elle entre dans une boucle comme celle-ci :
code language-none 08.01.2015 01:22:04.474 *INFO* [ pool-9-thread-2] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes [ /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified] 08.01.2015 01:52:08.365 *INFO* [ pool-9-thread-5] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes [ /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified] 08.01.2015 09:33:23.306 *INFO* [ pool-9-thread-5] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes [ /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified] -
Si cela se produit, vous devez activer la journalisation au niveau du 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.