Amazon OpenSearch Service の Auto-Tune - Amazon OpenSearch Service

Amazon OpenSearch Service の Auto-Tune

Amazon OpenSearch Service の Auto-Tune では、OpenSearch クラスターのパフォーマンスと使用状況のメトリクスを使用して、メモリ関連の設定の変更を提案します。これには、キューとキャッシュのサイズ、ノードの Java 仮想マシン (JVM) 設定が含まれます。これらのオプションの変更により、クラスターの速度と安定性が向上します。

変更によってはすぐにデプロイされるものもあれば、メンテナンスウィンドウのスケジュールを設定する必要があるものもあります。いつでもデフォルトの OpenSearch Service 設定に戻すことができます。

Auto-Tune がドメインのパフォーマンスメトリクスの収集および分析を行うと、通知ページの OpenSearch Service コンソールでレコメンデーションを確認できます。

Auto-Tune は、サポートされているインスタンスタイプを用いて、OpenSearch バージョン、または Elasticsearch 6.7 以降を実行しているドメインの商用AWS リージョンで利用可能です。

変更のタイプ

Auto-Tune には、大きく分けて次の 2 つのカテゴリがあります。

  • クラスターの実行時に適用される、無停止での変更

  • Blue/Green デプロイを必要とする変更

Auto-Tune では、ドメインのパフォーマンスメトリクスに基づいて、次の設定の調整を提案できます。

タイプの変更 カテゴリ 説明

JVM ヒープサイズ

Blue/Green

デフォルトでは、OpenSearch Service は JVM ヒープ (最大 32 GiB のヒープサイズ) にインスタンスの RAM の 50% を使用します。

この割合を増やすと、OpenSearch のメモリは増えますが、オペレーティングシステムやその他のプロセスでは減ります。値を大きくすると、ガベージコレクションの一時停止の数は減りますが、一時停止の長さが増えます。

JVM 新世代設定

Blue/Green

JVM「新世代」設定は、マイナーガベージコレクションの頻度に影響します。マイナーコレクションを頻繁に行うと、メジャーコレクションの数が減り、一時停止することがあります。

キューサイズ

無停止

デフォルトでは、検索キューのサイズは 1000 であり、書き込みキューのサイズは 10000 です。リクエストを処理するために追加のヒープが利用可能な場合、Auto-Tune は検索キューと書き込みキューを自動的にスケーリングします。

キャッシュサイズ

無停止

フィールドキャッシュは、ヒープ上のデータ構造をモニタリングするので、キャッシュの使用をモニタリングすることが重要です。Auto-Tune は、フィールドデータキャッシュサイズをスケーリングして、メモリ不足や回路ブレーカーの問題を回避します。

シャードリクエストキャッシュはノードレベルで管理され、デフォルトの最大サイズはヒープの 1% です。Auto-Tune は、シャードリクエストキャッシュのサイズをスケーリングして、設定されたクラスターが処理できるよりも多くの検索およびインデックスリクエストを受け入れます。

リクエストサイズ 無停止

デフォルトでは、実行中のリクエストの集計サイズが合計 JVM の 10% を超えている場合(t2 インスタンスタイプでは 2%、t3.small では 1%)、既存のリクエストが完了するまで、OpenSearch はすべての新しい _search および _bulk をスロットルします。

Auto-Tune は、システム上で現在占有されている JVM の量に基づいて、このしきい値(通常は 5 ~ 15%)を自動的に調整します。例えば、JVM のメモリ負荷が高い場合、Auto-Tune はしきい値を 5% に減らすことがあり、その時点で、クラスターが安定してしきい値が増加するまで、拒否が多くなる可能性があります。

メンテナンスウィンドウを設定せずに Auto-Tune を有効にすると、Auto-Tune は無停止の変更のみを適用します。時間の経過に伴うパフォーマンスのメリットは一般的に小さくなりますが、Blue/Green デプロイに関連付けられたオーバーヘッドは回避されます。

メンテナンスウィンドウの設定に関するガイダンスについては、「変更のスケジューリング」を参照してください。

Auto-Tune を有効または無効にする

OpenSearch Service では、新しいドメインで、デフォルトで Auto-Tune が有効になります。既存のドメインで Auto-Tune を有効または無効にするには、コンソールを使用することをお勧めします。これにより、プロセスが大幅に簡素化されます。コンソール内で自分のドメインを選択し、Auto-Tuneタブに進んだら、編集を選択します。Blue/Green デプロイを必要とする変更

AWS CLI

AWS CLI を使用するには、auto-tune-options パラメータを設定します。次のサンプルコマンドは、毎日 12:00pm UTC に繰り返されるメンテナンススケジュールを用いて、既存のドメインで Auto-Tune を有効にします。

aws opensearch update-domain-config \ --domain-name mylogs \ --auto-tune-options '{"DesiredState": "ENABLED","MaintenanceSchedules":[{"StartAt":"2021-12-19","Duration":{"Value":2,"Unit":"HOURS"},"CronExpressionForRecurrence": "cron(0 12 * * ? *)"}]}'

設定 API

設定 API を使用するには、AutoTuneOptions の設定を行います。

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/domain-name/config { "AutoTuneOptions": { "DesiredState": "ENABLED", "MaintenanceSchedules": [{ "StartAt": 4104152288000, "Duration": { "Value": 2, "Unit": "HOURS" }, "CronExpressionForRecurrence": "cron(0 12 * * ? *)" }] } }

CloudFormation

現在、AWS CloudFormation を使用して Auto-Tune を有効または無効にすることはできません。

変更のスケジューリング

Blue/Green デプロイを必要とする変更を適用するには、ドメインのメンテナンスウィンドウをスケジューリングします。例えば、金曜日の 6:00~9:00 AM です。トラフィックが少ない時間帯でメンテナンスウィンドウをスケジューリングすることをお勧めします。

  • デプロイする前にすべての変更を確認するために、Auto-Tune が最適化の提案を通知するのを待機します。次に、1 回限りのメンテナンスウィンドウをスケジューリングして、変更をデプロイします。

  • より自動化された操作については、毎週土曜日の 2:00 AM などの毎週のメンテナンス期間を設定するか、より複雑なスケジュールではカスタム cron 式を使用します。

コンソールで変更をスケジューリングするには、ドメインを選択し、[Auto-Tune] タブに進み、[編集] を選択してから、[メンテナンスウィンドウの追加] を選択します。このタブには、現在のメンテナンスウィンドウと、次のウィンドウで Auto-Tune が変更されるかどうかも表示されます。

cron 式

Auto-Tune の cron 式は、Amazon CloudWatch Events と同じ 6 フィールドの構文を使用します。

minute hour day-of-month month day-of-week year

たとえば、次の式は、「2021年から2024年の毎週火曜日と金曜日の 1:15 AM」と解釈されます。

15 1 ? * 2,5 2021-2024

次の表には、各フィールドの有効な値が含まれます。

フィールド 有効な値

0~59

時間

0~23

1~31

1~12 または JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC

曜日

1~7 またはSUN、MON、TUE、WED、THU、FRI、SAT

1970~2199

日と曜日は重複しているので、どちらか一方を指定できますが、両方を指定することはできません。もう一方を ? とマークする必要があります。ワイルドカードオプションの完全な概要については、「Amazon CloudWatch Events ユーザーガイド」を参照してください。