本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障 out-of-memory診斷 Aurora MySQL 資料庫的問題
Aurora MySQL aurora_oom_response
執行個體層級參數可讓資料庫執行個體監控系統記憶體,並預估各種陳述式和連線耗用的記憶體。如果系統記憶體不足,則可以執行動作清單來嘗試釋放該記憶體。這樣做是為了避免資料庫 out-of-memory因 (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_connect
中tune_buffer_pool
與kill_query
或 配對。如果沒有,即使您將 包含在參數值tune_buffer_pool
中,也不會發生緩衝集區大小調整。
在低於 3.06 的 Aurora MySQL 版本中,對於記憶體小於或等於 4 GiB 的資料庫執行個體類別,當執行個體處於記憶體壓力下時,預設動作包括 print
、decline
、 tune
和 kill_query
。對於記憶體大於 4 GiB 的資料庫執行個體類別,參數值預設為空白 (停用)。
在 Aurora MySQL 3.06 版及更新版本中,對於記憶體小於或等於 4 GiB 的資料庫執行個體類別,Aurora MySQL 也會關閉耗用記憶體的連線 (kill_connect
)。對於記憶體大於 4 GiB 的資料庫執行個體類別,預設參數值為 print
。
如果您經常遇到 out-of-memory問題,啟用 時可以使用記憶體摘要資料表來監控記憶體performance_schema
。
如需 相關的 Amazon CloudWatch 指標OOM,請參閱 Amazon Aurora 的執行個體層級指標。如需與 相關的全域狀態變數OOM,請參閱 Aurora MySQL 全域狀態變數。