Analysieren von AEM Indizierungsproblemen

Der Artikel enthält Anleitungen zum Analysieren von langsamen Abfragen, zur Neuindizierung asynchroner Indizes und zur Fehlerbehebung bei Indizierungsproblemen in Adobe Experience Manager.

Beschreibung description

Umgebung

Adobe Experience Manager

Problem/Symptome

Wie können Sie alle gängigen Indizierungsprobleme beheben?

Auflösung resolution

Analysieren langsamer Abfragen

Unter Tools > Vorgänge > Dashboard > Diagnose >Abfrageleistung wird die Liste der langsamen Abfragen angezeigt.

Siehe dieses Dokument für Details zur Analyse der langsamen Abfragen.

In produktionsfremden Umgebungen kann das Paket Adobe Consulting Services (ACS)-AEM-Tools installiert werden, um ein erklärtes Abfrage-Tool für das weitere Debugging bereitzustellen.

Neuindizierung asynchroner Indizes

Hinweis: Neuindizierung löst in der Regel keine Abfrageprobleme, z. B. Abfragen, die nicht die richtigen Ergebnisse zurückgeben. Außerdem kann es lange dauern, bis eine Neuindizierung vermieden wird, es sei denn, sie wird durch einen dort aufgeführten Grund abgedeckt.

Neuindizieren eines asynchronen Index

  • Melden Sie sich bei Ihrer AEM-Autoreninstanz an

  • Öffnen Sie http://aemhost:port/crx/de/index.jsp

  • Navigieren Sie zur Indexdefinition unter /oak:index.

  • Legen Sie die boolesche Eigenschaft reindex=true für den neu zu indizierenden Index fest und speichern Sie dann. Wenn die Indizierung beginnt, wird eine Protokollmeldung wie die folgende angezeigt:

    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]
    
  • Während der Neuindizierung hätte das status attribute von IndexStatsMBean den Wert 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)
    
  • Sie können bestätigen, dass die Indizierung abgeschlossen ist, indem Sie Ihren Indexdefinitionsknoten überprüfen. Die Eigenschaft reindexCount sollte inkrementiert worden sein und der boolesche Wert für die Neuindizierung sollte auf false gesetzt sein.

    Wenn die Indizierung erfolgreich abgeschlossen wurde, wird in der Protokolldatei der folgende Eintrag angezeigt:

    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
    
  • Wenn die Neuindizierung nicht abgeschlossen werden kann und in eine Schleife geraten ist, lesen Sie den folgenden Abschnitt Analysieren fehlgeschlagener Neuindizierung .

  • Die asynchrone Indexaktivität kann auf der INFO-Ebene durch folgenden Grep identifiziert werden:

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

Leistungsprobleme bei der asynchronen Indizierung

  1. Aktivieren Sie die Protokollierung, um den Zeitpunkt zu überprüfen:

    TRACE-Ebene (nur in Oak 1.0.17 oder höher):

    code language-none
    org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perf
    

    DEBUGGING-Ebene:

    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
    

    Protokolle wie diese, die den Zeitpunkt der Indizierung anzeigen, würden erzeugt werden:

    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. Erstellen Sie eine Reihe von Thread-Dumps und suchen Sie im Stapel nach dem Thread, der AsyncIndexUpdate enthält, um zu sehen, wo die meiste Zeit mit der Indizierung verbracht wird oder ob die Indizierung auf andere Threads wartet. Informationen zu Thread-Dumps finden Sie diesem Artikel.

  3. Legen Sie die boolesche Eigenschaft saveDirectoryListing=true fest (nur bei Verwendung von Oak 1.0.16, bei neueren Versionen nicht erforderlich) und legen Sie die Eigenschaft excludedPaths=[ /var, /etc/workflow/instances, /jcr:system] für den vorkonfigurierten Index /oak:index/lucene fest, um ihn zu optimieren.

  4. Klicken Sie Alle speichern.

  5. Wenn Sie benutzerdefinierte Lucene-Eigenschaftsindizes erstellen, stellen Sie sicher, dass Sie saveDirectoryListing=true (Boolesch) festlegen, wenn Sie Oak 1.0.16 verwenden, und IncludedPaths (Zeichenfolge[ ] ) festlegen, um Ihren Index auf bestimmte Pfade zu beschränken.

  6. Rufen Sie diese URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderServiceKopieren Lesen, Kopieren beim Schreiben(nur sicher in Oak 1.0.18 und höher) und „Indexdateien vorholen“ (nur in Oak 1.0.18 und höher) auf.

Fehlgeschlagene Neuindizierung analysieren

  1. Wenn die asynchrone Indizierung fehlschlägt, sehen Sie in der JMX-Benutzeroberfläche für Statistiken zum Async-Indexer (Link unten), dass LastIndexedTime ein altes Datum und eine alte Uhrzeit ist: http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D11%2Cname%3D"async"%2Ctype%3D"IndexStats"

  2. Wenn die Neuindizierung fehlschlägt, kommt es zu einer Schleife wie dieser:

    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. Wenn Sie dies sehen, sollten Sie die Protokollierung auf Debugging-Ebene für org.apache.jackrabbit.oak.plugins.index aktivieren

  4. Wenn die Indizierung das nächste Mal eine Schleife durchläuft und die obige Protokollmeldung angezeigt wird, gibt eine Debugging-Protokollmeldung mehr Aufschluss darüber, warum die Indizierung fehlgeschlagen ist. Dann können Sie das Problem beheben, egal ob es sich um einen beschädigten Knoten, einen fehlenden Blob oder ein anderes Problem handelt.

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