Ziel

Analysieren von langsamen Abfragen

Navigieren Sie zu „Tools“ -> „Vorgänge“ -> „Dashboard“ -> „Diagnose“ -> „Abfrageleistung“, um die Liste der langsamen Abfragen anzuzeigen.  

Details zum Analysieren der langsamen Abfragen finden Sie in diesem Dokument.

In Nicht-Produktionsumgebungen kann das Paket mit den ACS AEM-Tools installiert werden, um ein Abfrageerläuterungstool für das weiterführende Debugging bereitzustellen. Informationen zu diesem Tool finden Sie in dieser Dokumentation.

Neuindizierung von asynchronen Indizes

Neuindizierung eines asynchronen Index

  • Öffnen Sie die Web-App „http://aemhost:port/crx/de/index.jsp“ und melden Sie sich als „admin“ an.
  • Navigieren Sie zur Indexdefinition unter „/oak:index“.
  • Legen Sie die boolesche Eigenschaft „reindex=true“ fest. Wenn die Indizierung gestartet wird, sollte eine Protokollmeldung angezeigt werden, die der folgenden ähnelt:

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 weist das „status“-Attribut von „IndexStatsMBean“ auf dem „leader“-Clusterknoten den Wert „running“ auf.
 23.06.2015 14:26:23.517 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Réindexation parcourue #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 wurde, indem Sie Ihren Indexdefinitionsknoten überprüfen, wobei bei erfolgreichem Abschluss der Indizierung die Eigenschaft „reindexCount“ erhöht sein sollte und der boolesche Wert für die Neuindizierung „false“ lauten sollte
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 wird und in eine Schleife versetzt wurde, sollten Sie nachfolgenden Abschnitt lesen.

Die asynchrone Indexaktivität kann auf INFO-Ebene identifiziert werden, indem org.apache.jackrabbit.plugins.index.IndexUpdate und org.apache.jackrabbit.plugins.index.AsyncIndexUpdate per Grep-Befehl aufgerufen werden.

Leistungsprobleme bei der asynchronen Indizierung

  • Aktivieren der Protokollierung zum Validieren des Timings:

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

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

DEBUG-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 werden generiert und zeigen das Timing der Indizierung:

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]

  • Übernehmen Sie eine Reihe an Thread-Sicherungskopien und suchen Sie nach dem Thread, der „AsyncIndexUpdate“ im Stack enthält, um nachzuvollziehen, wo die meiste Indizierungszeit aufgewendet wird, oder um nachzuvollziehen, ob die Indizierung auf einige andere Threads wartet. Informationen zum Übernehmen von Thread-Sicherungskopien finden Sie in diesem Artikel.
  • Legen Sie die boolesche Eigenschaft „saveDirectoryListing=true“ (nur bei Verwendung von Oak 1.0.16, bei höherer Version nicht erforderlich) und die Eigenschaft „excludedPaths=[/var, /etc/workflow/instances, /jcr:system]“ für den OOTB-Index „/oak:index/lucene“ fest, um ihn zu optimieren.
  • Klicken Sie auf „Alle speichern“.
  • Stellen Sie beim Erstellen von benutzerdefinierten Lucene-Eigenschaftsindizes sicher, dass Sie bei Verwendung von Oak 1.0.16 „saveDirectoryListing=true (Boolean)“ festlegen, und legen Sie die Eigenschaft „includedPaths (String[])“ fest, um Ihren Index so einzuschränken, dass nur bestimmte Pfade indiziert werden.

Navigieren Sie zu dieser URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService „Copy on Read“, „Copy on Write“ (kann nur sicher in Oak 1.0.18 und höher verwendet werden) und „Prefetch Index Files“ (nur in Oak 1.0.18 und höher).

Analysieren der fehlerhaften Neuindizierung

  • Wenn bei der asynchronen Indizierung Fehler auftreten, wird beim Überprüfen auf der JMX-Benutzeroberfläche für die Statistiken des Programms für die asynchrone Indizierung (Link unten) angezeigt, dass „LastIndexedTime“ ein altes Datum und eine alte Uhrzeit aufweist:

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

  • Wenn die Neuindizierung fehlschlägt, führt dies zudem zu einer Schleife wie der folgenden:

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]

  • Wird dies angezeigt, sollten Sie die Protokollierung auf Debug-Ebene für org.apache.jackrabbit.oak.plugins.index aktivieren.
  • Wenn die Indizierung beim nächsten Mal mit einer Protokollmeldung, die oberhalb einer Debug-Protokollmeldung liegt, zu einer Schleife führt, ergibt dies mehr Details zum Fehlschlagen der Indizierung.  Dann können Sie das Problem beheben, unabhängig davon, ob es sich um einen beschädigten Knoten, ein fehlendes Blog oder ein anderes Problem handelt.

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie