目標

本文旨在詳細說明如何疑難排解各種常見索引問題。 

分析查詢緩慢

前往「工具 -> 作業 -> 控制面板 -> 診斷 -> 查詢效能」,即可顯示查詢緩慢的清單。 

如需有關分析查詢緩慢的詳細資訊,請參閱本文件

在非生產環境中,您可安裝 ACS AEM 工具套件以提供說明查詢工具,以進一步執行偵錯。請參閱此工具的相關文件

重新索引非同步處理索引

如何重新索引非同步處理索引

  • 開啟 http://aemhost:port/crx/de/index.jsp 網頁應用程式,並以管理員身分登入。
  • 瀏覽至 /oak:index 下方的索引定義。
  • 將布林值屬性設為 reindex=true。索引開始時,您會看到記錄訊息如下:

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]

  • 當重新索引進行時,「leader」叢集節點上 IndexStatsMBean 的「status」屬性可能會出現「running」值。
 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)
  • 您可以檢查索引定義節點以確認索引完成,而若索引已順利完成,則屬性 reindexCount 應已增量,且重新索引布林值應為 false。
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
  • 如果重新索引未完成,且進入迴圈,請參閱以下章節

您可對 org.apache.jackrabbit.plugins.index.IndexUpdateorg.apache.jackrabbit.plugins.index.AsyncIndexUpdate 進行 grep 文字搜尋,以找出 INFO 層級的非同步處理索引活動。

非同步處理索引效能問題

  • 啟用記錄以驗證時間:

TRACE 層級 (僅限在 Oak 1.0.17 或更新版本):

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

DEBUG 層級:

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

系統可能會產生以下記錄並顯示索引的時間:

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]

  • 收集一系列執行緒傾印,並在堆疊中搜尋包含 AsyncIndexUpdate 的執行緒,以瞭解大部分的索引時間花費於何處,或者索引是否在部分其他執行緒上等待。若要收集執行緒傾印,請參閱本文
  • 將布林值屬性設為 saveDirectoryListing=true (僅限於使用 Oak 1.0.16 時,如使用更新版本則不需要),並將 /oak:index/lucene OOTB 索引上的屬性設為 excludedPaths=[/var, /etc/workflow/instances, /jcr:system] 即可進行最佳化。
  • 按一下「儲存全部」
  • 當您建立自訂 lucene 屬性索引時,務必設定 saveDirectoryListing=true (Boolean) (若使用 Oak 1.0.16),並設定 includedPaths (String[]) 屬性,以限制您的索引僅對特定路徑執行索引。

前往此 URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService「讀取時複製」、「寫入時複製」(僅在 Oak 1.0.18 及更新版本中可安全使用) 和「預先擷取索引檔案」(僅限於 Oak 1.0.18 及更新版本)

分析失敗的重新索引

  • 當非同步處理索引失敗,且您檢查「非同步處理索引子」統計資料 JMX UI (連結如下) 時,您會發現 LastIndexedTime 顯示舊的日期與時間:

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

  • 此外,當重新索引失敗時,會進入如下的迴圈:

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]

  • 如果您發現此狀況,應啟用 org.apache.jackrabbit.oak.plugins.index 的偵錯層級記錄
  • 當下次索引進入迴圈且記錄訊息如上所述時,其上方偵錯記錄訊息便會提供更多有關索引失敗原因的詳細資料。 之後無論發生節點損毀、blob 遺失或其他問題,您都能夠據此處理。

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策