Objectif

Cet article vise à fournir des informations pour résoudre les principaux problèmes d’indexation. 

Analyse des requêtes lentes

Pour afficher la liste des requêtes lentes, accédez à Outils > Opérations > Tableau de bord > Diagnostics > Performances des requêtes.  

Pour en savoir plus sur l’analyse des requêtes lentes, consultez ce document

Dans les environnements non productifs, les ensembles d’outils AEM ACS peuvent être installés pour offrir un outil d’explication des requêtes en vue d’un débogage. Consultez cette documentation sur cet outil.

Réindexation des index asynchrones

Méthode de réindexation d’un index asynchrone

  • Ouvrez l’application web http://aemhost:port/crx/de/index.jsp et connectez-vous en tant qu’administrateur.
  • Naviguez jusqu’à la définition de l’index sous /oak:index.
  • Définissez une propriété de type booléenne reindex=true. Au début de la réindexation, un message de journal similaire à l’exemple suivant peut s’afficher :

23.06.2015 14:26:23.070 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Une réindexation va être effectuée pour les index suivants : [/oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]

  •  Au cours de la réindexation, l’attribut « status » (statut) de                IndexStatsMBean, dans le nœud de grappes d’instrument « leader » devrait afficher la valeur « running » (en cours).
 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 Indexation du rapport    - /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 vous assurer que l’indexation est bien terminée en vérifiant votre nœud de définition d’index. La propriété reindexCount devrait s’être mise à jour et la valeur booléenne de réindexation devrait être fausse si l’indexation est correctement terminée.
23.06.2015 14:28:52.009 *INFO* [pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Réindexation (asynchrone) terminée pour les index suivants : [/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 réindexation ne s’est pas terminée et a réalisé une boucle, consultez la section ci-dessous.

L’activité d’index asynchrone peut être identifiée au niveau INFO en consultant org.apache.jackrabbit.plugins.index.IndexUpdate et org.apache.jackrabbit.plugins.index.AsyncIndexUpdate.

Indexation asynchrone des problèmes de performances

  • Activez la journalisation pour valider le minutage :

Niveau TRACE (uniquement dans Oak version 1.0.17 ou 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

Les journaux de ce type devraient être générés en indiquant l’heure d’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] Ajout d’un nœud [/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’indexation asynchrone en arrière-plan
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 correspond à 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 Indexation du rapport
- /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] Détection d’un index à mettre à jour. Réouverture de l’IndexNode [durée : 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] 0 fichier copié pour un total de 0 o [durée : 1465 ms]
09.07.2015 08:13:45.248 *TRACE* [oak-lucene-0] org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier [/oak:index/lucene] Ouverture à distance uniquement du fichier 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] Détection d’un index à mettre à jour. Réouverture de l’IndexNode [durée : 1 581 ms]

  • Prenez une série d’images mémoire de threads et recherchez le thread dont la pile contient AsyncIndexUpdate pour identifier la partie de l’indexation la plus longue ou pour déterminer si l’indexation attend d’autres threads. Pour prendre des images mémoire de threads, consultez cet article.
  • Définissez la propriété de type booléenne saveDirectoryListing=true (uniquement avec Oak 1.0.16 car inutile avec les versions ultérieures) ainsi que la propriété excludedPaths=[/var, /etc/workflow/instances, /jcr:system] sur l’index OOTB /oak:index/lucene pour l’optimiser.
  • Cliquez sur « Tout enregistrer ».
  • Lors de la création d’index de propriété Lucene, veillez à définir saveDirectoryListing=true (type booléen) si vous utilisez Oak 1.0.16 et à définir la propriété includedPaths (String[]) pour limiter votre index à certains chemins de l’index.

Accédez à l’URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService « Copier à la lecture », « Copier à l’écriture » (uniquement dans Oak version 1.0.18 et ultérieure) et « Précharger les fichiers d’index » (uniquement dans Oak version 1.0.18 et ultérieure).

Analyse de l’échec de la réinitialisation

  • En cas d’échec d’une indexation asynchrone, vous devriez constater que LastIndexedTime correspond à une ancienne date et heure en vérifiant l’IU JMX de statistiques du moteur d’indexation asynchrone :

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

  • Un échec de réindexation entraîne également une boucle du type suivant :

08.01.2015 01:22:04.474 *INFO* [pool-9-thread-2] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Une réindexation va être effectuée pour les index suivants : [/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 Une réindexation va être effectuée pour les index suivants : [/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 Une réindexation va être effectuée pour les index suivants : [/oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified]

  • Dans ce cas, activez la journalisation au niveau debug pour org.apache.jackrabbit.oak.plugins.index.
  • À la prochaine boucle d’indexation avec ce message de journal, un message de journal de débogage au-dessus de celui-ci apportera des informations supplémentaires sur la raison de l’échec de l’indexation.  Vous pouvez ainsi résoudre le problème, qu’il s’agisse d’un nœud corrompu, d’un objet blob manquant ou de tout autre problème.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne