Aurora MySQL データベースのメモリ不足の問題のトラブルシューティング
Aurora MySQL aurora_oom_response
インスタンスレベルパラメータは、DB インスタンスによって、システムメモリをモニタリングしてさまざまなステートメントおよび接続で消費されるメモリを推測できるようにします。システムでメモリ不足が発生した場合、メモリを解放するためのアクションリストを実行できます。これは、メモリ不足 (OOM) を原因とするデータベースの再起動を避ける目的で実行されます。このインスタンスレベルのパラメータでは、メモリが少ない場合に DB インスタンスが実行すべきアクションを、カンマ区切りの文字列で指定できます。この aurora_oom_response
パラメータは、Aurora MySQL バージョン 2 および 3 でサポートされています。
aurora_oom_response
パラメータには、以下の値とそれらの組み合わせを使用できます。空の文字列はアクションが実行されないことを意味し、実質的にこの機能はオフになります。そのため、データベースは OOM の再起動が発生しやすくなります。
-
decline
– DB インスタンスのメモリが少なくなった場合、新しいクエリを拒否します。 -
kill_connect
– 大量のメモリを消費しているデータベース接続を閉じ、現在のトランザクションとデータ定義言語 (DDL) ステートメントを終了します。この応答は、Aurora MySQL バージョン 2 ではサポートされていません。詳細については、MySQL ドキュメントの「KILL ステートメント
」を参照してください。 -
kill_query
– インスタンスのメモリが低しきい値を超えるまで、メモリ使用量の高い順にクエリを終了します。DDL ステートメントは終了されません。詳細については、MySQL ドキュメントの「KILL ステートメント
」を参照してください。 -
print
– 大量のメモリを使用するクエリのみを出力します。 -
tune
- 内部テーブルキャッシュを調整して、メモリをシステムに戻します。Aurora MySQL は、メモリが少ない状態ではtable_open_cache
やtable_definition_cache
などのキャッシュに使用されるメモリを低減します。最終的に、Aurora MySQL は、システムのメモリ不足がなくなると、メモリ使用量を通常に戻します。詳細については、MySQL ドキュメントの「table_open_cache
」と「table_definition_cache 」を参照してください。 -
tune_buffer_pool
– バッファプールのサイズを小さくしてメモリを解放し、データベースサーバーが接続を処理できるようにします。この応答は、Aurora MySQL バージョン 3.06 以降でサポートされています。tune_buffer_pool
をkill_query
またはaurora_oom_response
パラメータ値のkill_connect
とペアにする必要があります。そうしない場合、パラメータ値にtune_buffer_pool
を含めても、バッファプールのサイズ変更は行われません。
3.06 以前のバージョンの Aurora MySQL の場合は、メモリが 4 GiB 以下の DB インスタンスクラスでメモリプレッシャーがかかっているときのデフォルトアクションに print
、tune
、decline
、kill_query
があります。4 GiB を超えるメモリがある DB インスタンスクラスでは、このパラメータ値はデフォルトで空 (無効) になっています。
Aurora MySQL バージョン 3.06 以降では、メモリが 4 GiB 以下の DB インスタンスクラスの場合、Aurora MySQL は最もメモリ消費量の多い接続 (kill_connect
) も閉じます。4 GiB を超えるメモリがある DB インスタンスクラスでは、このパラメータ値はデフォルトで print
になっています。
メモリ不足の問題が頻繁に発生する場合は、performance_schema
が有効になっていればメモリのサマリーテーブル
OOM に関連する Amazon CloudWatch メトリクスについては、「Amazon Aurora のインスタンスレベルのメトリクス」を参照してください。OOM に関連するグローバルステータス変数については、「Aurora MySQL グローバルステータス変数」を参照してください。