AEM の内部インデックス作成プロセスでは、コンテンツを効率的に検索できるように、リポジトリデータが収集され Oak インデックスに保存されます。例外的な状況で、このプロセスが遅くなったり、停止したりすることがあります。このページは、インデックス作成に時間がかかっているかどうかを識別し、原因を特定し、問題を解決するためのトラブルシューティングガイドの役割を果たします。
必要以上に長時間がかかっているインデックス再作成と、コンテンツの量が膨大であるために処理に時間がかかっているインデックス再作成を区別することが重要です。例えば、コンテンツのインデックス作成にかかる時間はコンテンツの量に比例するので、大規模な実稼動リポジトリのインデックスを再作成するには小規模な開発リポジトリよりも時間がかかります。
コンテンツのインデックス再作成のタイミングおよび方法について詳しくは、クエリとインデックスに関するベストプラクティスを参照してください。
時間がかかっているインデックス作成を最初に検出するには、IndexStats
JMX MBean を確認する必要があります。影響を受ける AEM インスタンスで、次の手順を実行します。
Web コンソールを開き、「JMX」タブをクリックするか、https://に移動します。<host>:<port>/system/console/jmx ( 例: http://localhost:4502/system/console/jmx) をクリックします。
次に移動: IndexStats
Mbeans.
を開きます。 IndexStats
"の MBean async
"および" fulltext-async
".
両方の MBean で、 完了 タイムスタンプと LastIndexTime タイムスタンプが現在の時刻から 45 分未満です。
いずれかの MBean で、時間値(Done または LastIndexedTime)が現在の時刻から 45 分以上前である場合は、インデックスジョブが失敗しているか、時間がかかりすぎています。これにより、非同期インデックスが古くなります。
強制終了によって、再起動後に AEM で非同期インデックス作成が最大 30 分停止し、通常は最初のインデックス再作成が完了するまでさらに 15 分かかり、合計で約 45 分が必要となります(最初の検出 の 45 分の時間枠を思い出してください)。強制終了後にインデックス作成が一時停止していることが疑われる場合は、次のことをおこなってください。
最初に、AEM インスタンスが強制的に終了した(AEM プロセスが強制的に kill された、または電源障害が発生した)後に再起動したかどうかを確認します。
強制終了が発生した場合、再起動後 AEM ではインデックス再作成が自動的に最大 30 分停止します。
AEM で通常の非同期インデックス作成操作が再開されるまで約 45 分待ってください。
AEM 6.1 の場合、 AEM 6.1 CFP 11 がインストールされている。
例外的な状況で、非同期インデックス作成の管理に使用されるスレッドプールが過負荷になることがあります。インデックス作成プロセスを分離するために、適当な時間でコンテンツにインデックス作成する Oak の機能に他の AEM の処理が干渉しないように、スレッドプールを設定できます。そのためには、次の手順を実行します。
Apache Sling Scheduler が非同期インデックス作成に使用する、分離された新しいスレッドプールを定義します。
Apache Sling Scheduler の新しいスレッドプールが登録され、Apache Sling Scheduler のステータス Web コンソールに表示されることを確認します。
AEM OSGi Web コンソール/ステータス/Sling スケジューラーに移動するか、https://に移動します。<host>:<port>/system/console/status-slingscheduler(例: ) http://localhost:4502/system/console/status-slingscheduler)
次のプールエントリが存在することを確認します。
リポジトリに非常に多くの変更とコミットが短時間におこなわれた場合、監視キューがいっぱいになることによってインデックス作成が遅延することがあります。まず、監視キューがいっぱいかどうかを確認します。
Web コンソールに移動し、「JMX」タブをクリックするか、https://に移動します。<host>:<port>/system/console/jmx ( 例: http://localhost:4502/system/console/jmx)
Oak リポジトリ統計 MBean を開き、いずれかの ObservationQueueMaxLength
値が 10,000 より大きいかどうかを確認します。
per second
セクションでは)最終的に 0 になる必要があるので、ObservationQueueMaxLength
の秒の指標が 0 であることを確認します。missRate
の DocChildren
キャッシュ Consolidated Cache
統計 MBean。許容可能な監視キュー制限を超えないようにするには、次のことをお勧めします。
DiffCache
の説明に従って、 パフォーマンス調整のヒント/Mongo ストレージの調整/ドキュメントのキャッシュサイズ.次の 2 つの状況下において、インデックス再作成は、「完全に動きがない」と見なすことができます。
インデックス再作成の速度が遅く、走査されたノード数に関する大きな進捗がログファイルで報告されない。
インデックス作成スレッドでログファイルに例外(OutOfMemoryException
など)が繰り返し出力されている場合、インデックス再作成は無限ループで動かなくなっている。ログに同じ例外が繰り返し表示される場合は、Oak が同じコンテンツのインデックスを繰り返し作成しようとして、同じ問題で失敗していることを示しています。
動きがないインデックス再作成プロセスを識別および修正するには、次の手順を実行します。
インデックス作成が動かない原因を識別するためには、次の情報を収集する必要があります。
2 秒ごとにスレッドダンプを取得し、5 分間収集します。
非同期からデータを収集 IndexStats
MBean:
AEM OSGi Web コンソール/メイン/JMX/IndexStat/async に移動します。
用途 oak-run.jar のコンソールモード *の下に存在する内容の詳細を収集するには /:async
*ノードです。
を使用して、リポジトリのチェックポイントのリストを収集します。 CheckpointManager
MBean:
AEM OSGi Web コンソール/メイン/JMX/CheckpointManager/listCheckpoints()
手順 1 で説明したすべての情報を収集したら、AEMを再起動します。
インデックス再作成は、 async, async-reindex
および f ulltext-async
インデックス作成レーン ( IndexStats
Mbean)。 詳しくは、 インデックス再作成の中止方法. また、次の点にも考慮します。
PropertyIndexAsyncReindexMBean
.インデックス再作成を安全に中止するには、次の手順に従います。
停止する必要があるインデックス再作成レーンを制御する IndexStats MBean を識別します。
AEM OSGi Web コンソール/メイン/JMX またはhttps://に移動して、JMX コンソールを使用して適切な IndexStats MBean に移動します。<host>:<port>/system/console/jmx ( 例: http://localhost:4502/system/console/jmx)
停止するインデックス再作成レーンに基づいて IndexStats MBean を開きます ( async
, async-reindex
または fulltext-async
)
async
, async-reindex
または fulltext-async
.を呼び出す abortAndPause()
適切な IndexStats
MBean。
インデックス作成レーンの再開時にインデックス再作成が再開されないように、Oak インデックス定義を適切にマークします。
インデックスの再作成時 既存 index、reindex プロパティを false に設定します。
/oak:index/someExistingIndex@reindex=false
あるいは、新規インデックスの場合は次のようにします。
type プロパティを無効に設定します。
/oak:index/someNewIndex@type=disabled
または、インデックス定義を完全に削除します。
完了したら、変更をリポジトリにコミットします。
最後に、中止したインデックス作成レーンで非同期インデックス作成を再開します。
IndexStats
発行した MBean abortAndPause()
コマンドを実行し、 resume()
コマンドを使用します。静止中(例えば、大きなコンテンツの取り込み中ではない)にインデックスを再作成することをお勧めします。また、AEMの読み込みが認識され、制御されている場合は、メンテナンスウィンドウで再インデックスを実行するのが理想的です。 また、インデックス再作成が他のメンテナンスアクティビティ中に実行されないようにしてください。