Analysieren von AEM Indizierungsproblemen

Beschreibung description

Umgebung
Experience Manager

Problem/Symptome
Wie kann ich 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.

In diesem Dokument finden Sie Einzelheiten zur Analyse der langsamen Abfragen.

In Nicht-Produktionsumgebungen kann das Tool-Paket 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:

23.06.2015 14:26:23.070 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate Die Neuindizierung wird für die folgenden Indizes durchgeführt: /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:campaign/path , /oak:index/active, /oak:index/jcrFrozenMixinTypes

  • Während die Neuindizierung läuft, hat das Attribut "status"von IndexStatsMBean den Wert "running".

23.06.2015 14:26:23.517 *INFO* FelixStartLevel org.apache.jackrabbit.oak.plugins.index.IndexUpdate Neuindizierung Durchlaufen #10000 /jcr:system/jcr:versionStorage/c8/5f…23.06.201514:28:51.999 *INFO* pool-8-thread-1 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indizierungsbericht - /oak:index/counter*(708) - /oak:index/authorizables*(159) - /oak:index/cqPageLucene*(1 913) - /oak:index/ntBaseLucene*(444) - /oak:index/cqTagLucene*(512) - /oak:index/workflowDataLucene*(116)

  • Sie können bestätigen, dass die Indizierung abgeschlossen wurde, indem Sie Ihren Indexdefinitionsknoten überprüfen, die Eigenschaft reindexCount hätte erhöht 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:

23.06.2015 14:28:52.009 *INFO* pool-8-thread-1 org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Neuindizierung (async) abgeschlossen für Indizes: /oak:index/counter*(708), /oak:index/authorizables*(159), /oak: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, sehen Sie sich den folgenden Abschnitt mit dem Titel Fehlgeschlagene Neuindizierung analysieren.

Die asynchrone Indexaktivität kann auf INFO-Ebene identifiziert werden, indem Sie  org.apache.jackrabbit.plugins.index.IndexUpdate  und  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):

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perf

DEBUGGING-Ebene:

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 dieses, die den Zeitpunkt der Indizierung anzeigen, würden erzeugt werden:

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 Documentstored,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
  • 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-Dumps finden Sie in diesem Artikel.
  • Legen Sie die boolesche Eigenschaft saveDirectoryListing=true fest (nur bei Verwendung von Oak 1.0.16, wenn spätere Version dann nicht erforderlich ist) und legen Sie die Eigenschaft excludedPaths=/var, /etc/workflow/instances, /jcr:system auf dem OOTB-Index /oak:index/lucene fest, um sie zu optimieren.
  • Klicken Sie auf „Alle speichern“.
  • 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) so festlegen, dass Ihr Index auf die Indexierung bestimmter Pfade beschränkt wird.

Rufen Sie diese URL auf  /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService  "Copy on Read", "Copy on Write"(nur sicher zur Verwendung in Oak 1.0.18 und höher) und "Prefetch Index Files"(nur in Oak 1.0.18 und höher)

Fehlgeschlagene Neuindizierung analysieren

  • Wenn die asynchrone Indizierung fehlschlägt und Sie die asynchrone Indexer-Stats-JMX-Benutzeroberfläche (Link unten) überprüfen, sehen Sie, 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 außerdem zu einer Schleife wie dieser:

08.01.2015 01:22:04.474 *INFO* pool-9-thread-2 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Die Neuindizierung wird für die folgenden Indizes durchgeführt: /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified08.01.20 15 01:52:08.365 *INFO* pool-9-thread-5 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Die Neuindizierung wird für die folgenden Indizes durchgeführt: /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified08.01.20 15 09:33:23.306 *INFO* pool-9-thread-5 org.apache.jackrabbit.oak.plugins.index.IndexUpdate Die Neuindizierung wird für die folgenden Indizes durchgeführt: /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified

  • Wenn Sie dies sehen, sollten Sie die Protokollierung auf Debug-Ebene für  org.apache.jackrabbit.oak.plugins.index

  • 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 angehen, 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