スキップしてコンテンツを表示

OpenSearch Service クラスターにおける JVM メモリ高負荷をトラブルシューティングする方法を教えてください。

所要時間1分
1

Amazon OpenSearch Service クラスターで Virtual Machine (JVM) のメモリ負荷が増加しているため、軽減したいと考えています。

簡単な説明

OpenSearch Service はデフォルトでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの RAM のうち 50% を JVM ヒープに割り当てます (最大 32 GiB)。JVM のメモリ負荷は、クラスターノード内の Java ヒープの割合を示します。

JVM メモリ負荷の増加は、次のシナリオで発生する可能性があります。

  • クラスターに対するリクエスト数の急増
  • クエリ内の集計、ワイルドカード、長大な時間範囲
  • ノード間の不均衡なシャード割り当て、クラスター内のシャード数過剰
  • フィールドデータまたはインデックスマッピングの制御不能な急増
  • インバウンド負荷に対処できない Amazon EC2 インスタンスタイプ

解決策

データ内のパターンを監視する

JVM メモリ負荷の増加を解決するには、クラスターへのトラフィックを削減します。

クラスターに関連するノードレベルの統計情報を取得し、メモリ負荷または過剰なガベージコレクションが発生するノードを特定するには、次のコマンドを実行します。

GET _nodes/stats/jvm

問題があるリクエストの特定を進めるには、スローログを有効にします。詳細については、OpenSearch のウェブサイトで「シャードのスローログ」を参照してください。JVM のメモリ負荷が 90% 未満であることを確認します。スロークエリに関する詳細については、Elasticsearch のウェブサイトで「高度な調整:Elasticsearchでのスロークエリの発見と修正」を参照してください。

Amazon CloudWatch を使用すると、JVM のメモリ消費とガベージコレクションの動作を経時的に監視できます。この情報を参考にパターンを検出し、クラスターが不安定化する前に措置を講じます。さらに、CloudWatch アラームを構成し、JVM のメモリ高負荷をプロアクティブに検出、解決します。

キャッシュ設定を確認する

フィールドデータキャッシュをクリアするには、次のクエリを実行します。

POST /index_name/_cache/clear?fielddata=true

注: キャッシュをクリアすると、進行中のクエリが中断される可能性があります。

JVM サーキットブレーカーを超過しており、メモリ消費が未対策の場合、JVM OutOfMemoryError が発生します。この問題を解決するには、構成の要件に基づき、親サーキットブレーカーのフィールドデータキャッシュ割り当て、リクエストサーキットブレーカーの設定のいずれかを変更します。クラスターレベルでこれらの設定を変更する方法については、OpenSearch のウェブサイトで「Cluster Settings API」を参照してください。

構成を最適化する

構成の最適化には、次のベストプラクティスを実施します。

JVM のメモリ高負荷をトラブルシューティングする方法については、「OpenSearch Service ノードがクラッシュする原因を教えてください」を参照してください。

JVM のメモリ高負荷がもたらす影響を把握する

次の各シナリオは、OpenSearch Service が複数の JVM メモリ負荷率を処理する仕組みを示しています。

  • JVM のメモリ負荷率が 75% に達すると、x86 インスタンスタイプでは、Amazon OpenSearch Service は Concurrent Mark Sweep (CMS) ガベージコレクターを開始します。ARM ベースの Graviton インスタンスタイプは、Garbage-First (G1) ガベージコレクターを使用しており、追加の短期中断やヒープのデフラグを行います。
    注: ガベージコレクションは、CPU 負荷が高いプロセスです。メモリ使用量が継続して増加すると、"ClusterBlockException" や "JVM OutOfMemoryError" エラーが発生し、その他のクラスターのパフォーマンスに関連する問題が起こる可能性があります。
  • JVM のメモリ負荷率が 30 分にわたり 92% を上回る場合、OpenSearch Service はすべての書き込み操作をブロックします。
  • JVM のメモリ負荷率が 100% に達すると、OpenSearch Service は終了します。その結果インスタンスが再起動し、"OutOfMemory (OOM)" エラーメッセージが表示されます。

関連情報

OpenSearch Service のトラブルシューティング

OpenSearch Service の開始方法: 必要なシャード数を把握する

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ