本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障診斷 Aurora MySQL 資料庫記憶體不足的問題
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 陳述式
。 -
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 版及更新版本支援此回應。您必須在
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 時,使用記憶體摘要資料表
如需與 OOM 相關的 Amazon CloudWatch 指標,請參閱 Amazon Aurora 的執行個體層級指標。如需與 OOM 相關的全域狀態變數,請參閱 Aurora MySQL 全域狀態變數。