本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障診斷 Aurora MySQL 資料庫記憶體out-of-memory的問題
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_definition_cache
table_open_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
。
在 Aurora MySQL 3.09 版及更新版本中,對於記憶體大於 4 GiB 的資料庫執行個體類別,預設參數值為 print,decline,kill_connect
。
如果您經常遇到out-of-memory問題,則可以在performance_schema
啟用時,使用記憶體摘要資料表來監控記憶體
如需與 OOM 相關的 Amazon CloudWatch 指標,請參閱 Amazon Aurora 的執行個體層級指標。如需與 OOM 相關的全域狀態變數,請參閱 Aurora MySQL 全域狀態變數。