Analysieren von AEM Indizierungsproblemen

Der Artikel enthält Anleitungen zur Analyse langsamer Abfragen, zur Neuindizierung asynchroner Indizes und zur Fehlerbehebung bei Indizierungsproblemen in Adobe Experience Manager.

Beschreibung description

Umgebung

Adobe Experience Manager

Problem/Symptome

Wie kann ich alle gängigen Indizierungsprobleme beheben?

Auflösung resolution

Analysieren langsamer Abfragen

Wenn Sie zu Tools > Vorgänge > Dashboard > Diagnose > Abfrageleistung gehen, wird die Liste der langsamen Abfragen angezeigt.

Weitere Informationen zum Analysieren der langsamen Abfragen finden Sie in diesem Dokument .

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

Neuindizierung asynchroner Indizes

Hinweis: Die Neuindizierung löst in der Regel keine Abfrageprobleme, z. B. Abfragen, die nicht die richtigen Ergebnisse zurückgeben. Außerdem kann die Neuindizierung 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 für den Index die boolesche Eigenschaft reindex=true fest, um ihn neu zu indizieren, 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 wird ausgeführt, hat das Attribut status 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 hätte inkrementiert werden sollen und der boolesche Neuindizierungswert auf false gesetzt werden sollte.

    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 ist und in eine Schleife geraten ist, lesen Sie den Abschnitt unten mit dem Titel Analysieren der fehlgeschlagenen Neuindizierung .

  • Die asynchrone Indexaktivität kann auf INFO-Ebene identifiziert werden, indem Sie Folgendes berücksichtigen:

    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 werden generiert und zeigen den Zeitpunkt der Indizierung an:

    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. Nehmen Sie eine Reihe von Thread-Sicherheitskopien und suchen Sie nach dem Thread, der AsyncIndexUpdate im Stapel enthält, um zu sehen, wo der Großteil der Indizierungszeit verbracht wird oder ob die Indizierung auf einige andere Threads wartet. Informationen zu Thread-Sicherheitskopien finden Sie in diesem Artikel.

  3. Legen Sie die boolesche Eigenschaft saveDirectoryListing=true fest (nur bei Verwendung von Oak 1.0.16, wenn eine spätere Version dann nicht erforderlich ist) und legen Sie die Eigenschaft excludedPaths=[ /var, /etc/workflow/instances, /jcr:system] auf den OOOTB-Index /oak:index/lucene fest, um ihn zu optimieren.

  4. Klicken Sie auf Alle speichern.

  5. Wenn Sie benutzerdefinierte Lucene-Eigenschaftenindizes erstellen, stellen Sie sicher, dass Sie saveDirectoryListing=true (Boolesch) festlegen, wenn Sie Oak 1.0.16 verwenden und die Eigenschaft includedPaths (String[ ] ) festlegen, um Ihren Index auf die Indexierung bestimmter Pfade zu beschränken.

  6. Wechseln Sie zu dieser URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService Kopieren beim Lesen, Kopieren beim Schreiben (nur sicher in Oak 1.0.18 und höher) und "Vorabruf-Indexdateien"(nur in Oak 1.0.18 und höher).

Fehlgeschlagene Neuindizierung analysieren

  1. Wenn die asynchrone Indizierung fehlschlägt, sehen Sie bei der Überprüfung der asynchronen Indexer-Benutzeroberfläche JMX (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, geht sie in eine Schleife wie diese:

    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 Debug-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 lösen, ob es sich um einen beschädigten Knoten, einen fehlenden Blob oder ein anderes Problem handelt.

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