ノードをプロビジョニングするAmazon OpenSearch Serviceドメインで検索が遅い。CloudWatch Logsのロググループと書き込みを許可するリソースポリシーは準備済みである。
シャード単位の遅い検索処理と、同時刻のクラスター状態・ノードの負荷を調べたい。シャードの検索slow logは既定の無効状態である。
適切な確認を2つ選べ。
インデックスのしきい値とログ公開を設定し、検索slow logを実在するクラスター・ノード指標と照合する。
詳細解説
シャードの割り当て状態とノードのCPU・ヒープ圧迫を検索ログへ関連付けて調べられる。
配信先への公開と、ログを生成するインデックス単位のしきい値の両方が必要である。
greenはシャードの割り当て状態を表し、検索時間やCPU・ヒープに余裕がある保証ではない。
シャード単位の処理時間は検索リクエスト全体や利用者側の応答時間と同じ範囲ではない。単純な合計を全応答時間とみなさず、観測範囲を揃えて調査する。
公開だけでは、無効のままのシャードslow logを生成する条件が設定されない。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
公式資料でシャードslow logの公開とインデックス設定、AWS/ESのメトリクス名・ディメンションを確認する。
参考にした公式資料
確認できる内容
公開だけではログが出ない理由と、シャード処理時間・クラスター状態・利用者の応答時間の違いを説明できる。
理解のポイント
- Slow Search Log
- ClusterStatus.red
- JVMMemoryPressure
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
ログを生成する設定と配信する設定
ドメインの検索slow log公開と、対象インデックスのindex.search.slowlog.threshold.query.warnなどを別々に設定する。fetch処理も調べるならindex.search.slowlog.threshold.fetch.warnなどを設定する。queryとfetchの既定しきい値は-1で無効である。しきい値を超える処理で到着を確認し、低いテスト用しきい値は調査後に戻す。公開を無効にするだけではインデックスのログ生成は止まらない。
状態の正常と性能の正常を分ける
AWS/ESのClusterStatus.redはプライマリーシャード、yellowはレプリカの未割り当てを示す。ノード指標はClientId、DomainName、NodeIdを選び、CPUUtilizationとJVMMemoryPressureのピークを調べる。greenでも遅い検索はあり、ログと同時刻の資源状況を組み合わせても追加調査なしに単一原因とは断定しない。
処理時間の観測範囲を揃える
この問題の対象は各シャードのquery/fetch処理である。検索リクエスト全体のtookや利用者側の応答時間と同一視しない。シャードログの単純合計だけで全応答時間を説明せず、同時刻のログとメトリクスから次の調査対象を絞る。