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 de requête 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é afin de 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 résultats appropriés. En outre, la réindexation peut prendre un certain temps. La réindexation doit être évitée à moins qu’elle ne soit couverte par 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 :

    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]
    
  • Pendant que la réindexation est en cours, l’attribut status d’IndexStatsMBean aurait 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 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 :

    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 est entrée dans 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 précisant :

    code language-none
    org.apache.jackrabbit.plugins.index.IndexUpdate, and
    org.apache.jackrabbit.plugins.index.AsyncIndexUpdate
    

Problèmes de performances de l’indexation asynchrone

  1. 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.perf
    

    Niveau 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.IndexCopier
    

    Des journaux de ce type seraient générés, indiquant le timing 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]
    
  2. 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 prendre des images mémoire de threads, reportez-vous à cet article.

  3. 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 /oak:index/lucene OTB pour l’optimiser.

  4. Cliquez sur Enregistrer tout.

  5. 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éfinissez includedPaths (String[ ] ) pour limiter votre index à indexer uniquement certains chemins.

  6. Accédez à cette URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService Copier en lecture, Copier en é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é

  1. 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"

  2. En cas d’échec de la réindexation, il est placé 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]
    
  3. Si vous voyez cela, vous devez activer la journalisation du niveau de débogage pour org.apache.jackrabbit.oak.plugins.index.

  4. 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 noeud corrompu, d’une blob manquante ou d’un autre problème.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f