

# Aurora MySQL データベースのメモリ不足の問題のトラブルシューティング
<a name="AuroraMySQLOOM"></a>

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 ステートメント](https://dev.mysql.com/doc/refman/8.0/en/kill.html)」を参照してください。
+ `kill_query` – インスタンスのメモリが低しきい値を超えるまで、メモリ使用量の高い順にクエリを終了します。DDL ステートメントは終了されません。

  詳細については、MySQL ドキュメントの「[KILL ステートメント](https://dev.mysql.com/doc/refman/8.0/en/kill.html)」を参照してください。
+ `print` – 大量のメモリを使用するクエリのみを出力します。
+ `tune` - 内部テーブルキャッシュを調整して、メモリをシステムに戻します。Aurora MySQL は、メモリが少ない状態では `table_open_cache` や `table_definition_cache` などのキャッシュに使用されるメモリを低減します。最終的に、Aurora MySQL は、システムのメモリ不足がなくなると、メモリ使用量を通常に戻します。

  詳細については、MySQL ドキュメントの「[table\$1open\$1cache](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_table_open_cache)」と「[table\$1definition\$1cache](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_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` になっています。

Aurora MySQL バージョン 3.09 以降では、4 GiB を超えるメモリがある DB インスタンスクラスの場合、デフォルトのパラメータ値は `print,decline,kill_connect` です。

メモリ不足の問題が頻繁に発生する場合は、`performance_schema` が有効になっていれば[メモリのサマリーテーブル](https://dev.mysql.com/doc/refman/8.3/en/performance-schema-memory-summary-tables.html)を使用してメモリ使用量をモニタリングできます。

OOM に関連する Amazon CloudWatch メトリクスについては、「[Amazon Aurora のインスタンスレベルのメトリクス](Aurora.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances)」を参照してください。OOM に関連するグローバルステータス変数については、「[Aurora MySQL グローバルステータス変数](AuroraMySQL.Reference.GlobalStatusVars.md)」を参照してください。