AEM インデックス作成の問題の分析
この記事では、低速のクエリの分析、非同期インデックスの再作成、Adobe Experience Managerでのインデックス作成の問題のトラブルシューティングに関するガイダンスを提供します。
説明 description
環境
Adobe Experience Manager
問題/症状
一般的なインデックス作成の問題をすべてトラブルシューティングする方法を教えてください。
解決策 resolution
処理に時間のかかるクエリの分析
ツール >
操作 >
ダッシュボード >
診断 >
クエリパフォーマンス に移動すると、処理に時間のかかるクエリのリストが表示されます。
処理に時間のかかるクエリの分析について詳しくは、 このドキュメントを参照してください。
実稼動以外の環境では、今後のデバッグ用に、クエリの説明ツールを提供するAdobe Consulting サービス(ACS)AEM ツールパッケージをインストールできます。
非同期インデックスの再作成
メモ: 再インデックス化は、通常、クエリの問題(クエリが正しい結果を返さないなど)を解決しません。 また、再インデックス化には、長い時間がかかることがあります。再インデックス化は、そこに記載されている理由に該当しない限り、避けるべきです。
非同期インデックスの再作成方法
-
AEM インスタンスにログインします
-
http://aemhost:port/crx/de/index.jspを開きます
-
/oak:index の下のインデックス定義を参照します。
-
再インデックス化するために、インデックスのブール型プロパティ reindex=true を設定してから、保存します。 インデックス作成が開始されると、次のようなログメッセージが表示されます。
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]
-
再インデックス化の進行中は、IndexStatsMBean の status attribute の値は 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)
-
インデックス定義ノードを確認して、インデックス作成が完了したことを確認できます。プロパティ reindexCount が増加して、再インデックスのブール値が false になります。
ログファイルでは、インデックス作成が正常に完了すると、次のエントリが表示されます。
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
-
インデックス再作成が完了せず、ループ状態に陥った場合は、後述のインデックス再作成の失敗の分析の節を参照してください。
-
非同期インデックスアクティビティは、次の場所を取得することで、情報レベルで識別できます。
code language-none org.apache.jackrabbit.plugins.index.IndexUpdate, and org.apache.jackrabbit.plugins.index.AsyncIndexUpdate
非同期インデックス作成のパフォーマンスの問題
-
有効なタイミングでのログを有効にします。
TRACE Level(Oak 1.0.17 以降のみ):
code language-none org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perf
DEBUG Level:
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
インデックス作成のタイミングを示す、次のようなログが生成されます。
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]
-
一連のスレッドダンプを取得し、スタックに 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"
-
インデックス再作成に失敗すると、次のようなループに陥ります。
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]
-
これを確認したら、
org.apache.jackrabbit.oak.plugins.index
のデバッグレベルのログを有効にする必要があります。 -
次回、インデックス作成が上記のログメッセージを伴ってループしたら、デバッグログメッセージにインデックス作成が失敗した理由に関する詳細が表示されます。次に、破損しているノードや、BLOB が見つからない問題、その他の問題など、問題に対処できます。