

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 故障診斷 Aurora MySQL 資料庫記憶體不足的問題
<a name="AuroraMySQLOOM"></a>

Aurora MySQL `aurora_oom_response` 執行個體層級參數可啟用資料庫執行個體監控系統記憶體，並估計各種陳述式和連線耗用的記憶體。如果系統執行時記憶體不足，它可以執行一連串的動作來嘗試釋放記憶體。它會這樣做以嘗試避免因記憶體不足 (OOM) 導致資料庫重新啟動。此執行個體層級參數會使用一個字串，字串內容是以逗號分隔的動作，當記憶體不足時，資料庫執行個體即會採取這些動作。Aurora MySQL 第 2 版和第 3 版支援 `aurora_oom_response` 參數。

下列值及其組合可用於 `aurora_oom_response` 參數。空字串表示不採取任何動作，並有效地關閉此功能，讓資料庫容易重新啟動 OOM。
+ `decline` – 一旦資料庫執行個體記憶體不足，便拒絕新的查詢。
+ `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 版及更新版本支援此回應。

  您必須在 `aurora_oom_response` 參數值中與 `kill_query` 或 `kill_connect` 配對 `tune_buffer_pool`。如果沒有，即使您將 `tune_buffer_pool` 包含在參數值中，也不會發生緩衝集區調整大小。

在低於 3.06 的 Aurora MySQL 版本中，對於記憶體小於或等於 4 GiB 的資料庫執行個體類別，當執行個體處於記憶體壓力下時，預設動作包括 `print`、`tune`、`decline` 和 `kill_query`。如果資料庫執行個體的記憶體大於 4 GiB，則參數值依預設為空白 (停用)。

在 Aurora MySQL 3.06 版及更高版本中，對於記憶體小於或等於 4 GiB 的資料庫執行個體類別，Aurora MySQL 也會關閉最耗用記憶體的連線 (`kill_connect`)。對於記憶體大於 4 GiB 的資料庫執行個體類別，預設參數值為 `print`。

在 Aurora MySQL 3.09 版和更新版本中，對於記憶體大於 4 GiB 的資料庫執行個體類別，預設參數值為 `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)。