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
-
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]
-
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.
-
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. -
Klicken Sie Alle speichern.
-
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. -
Rufen Sie diese URL
/system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService
Kopieren 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
-
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"
-
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]
-
Wenn Sie dies sehen, sollten Sie die Protokollierung auf Debugging-Ebene für
org.apache.jackrabbit.oak.plugins.index
aktivieren -
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.