目的

この記事の目的は、一般的なインデックス作成の問題のトラブルシューティング方法を説明することです。 

処理に時間のかかるクエリの分析

ツール/操作/ダッシュボード/診断/クエリパフォーマンスに移動して、処理に時間のかかるクエリのリストを表示します。 

処理に時間のかかるクエリの分析について詳しくは、このドキュメントを参照してください。

実稼動以外の環境では、今後のデバッグ用に、クエリの説明ツールを提供する ACS AEM ツールパッケージをインストールできます。このツールについては、このドキュメントを参照してください。

非同期インデックスの再作成

注意:

クエリを実行したときに正しい結果が返されないなどのクエリの問題は、通常、インデックスを再作成しても解決しません。また、インデックスの再作成には長い時間がかかります(インデックス作成に関するベストプラクティスの節に説明されているように、列挙された理由に該当しない限り、インデックスを再作成しないでください)。

非同期インデックスの再作成方法

  • http://aemhost:port/crx/de/index.jsp で Web アプリを開いて、管理者としてログオンします。
  • /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.IndexUpdate および org.apache.jackrabbit.plugins.index.AsyncIndexUpdate を grep 検索することで、INFO レベルで識別できます。

非同期インデックス作成のパフォーマンスの問題

  • 有効なタイミングでのログを有効にします。

TRACE Level(Oak 1.0.17 以降のみ):

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

DEBUG Level:

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 を含むスレッドを検索して、インデックス作成のほとんどの時間を費やした対象やインデックス作成が他のスレッドを待機しているかどうかを確認します。スレッドダンプを取得するには、この記事を参照してください。
  • /oak:index/lucene OOTB で、ブール型プロパティ saveDirectoryListing=true(Oak 1.0.16 を使用している場合のみ、それ以降のバージョンの場合は不要)を設定し、プロパティ excludedPaths=[/var、/etc/workflow/instances、/jcr:system] を設定して、最適化します。
  • 「すべて保存」をクリックします。
  • カスタム lucene プロパティインデックスを作成する場合、Oak 1.0.16 を使用する場合は saveDirectoryListing=true(ブール型)を設定し、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 によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー