故障 out-of-memory診斷 Aurora MySQL 資料庫的問題 - Amazon Aurora

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

故障 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_cachetable_definition_cache 在低記憶體條件下。最終,當系統不再處於記憶體不足狀態時,Aurora MySQL 會將其記憶體用量設回正常。

    如需詳細資訊,請參閱 MySQL 文件中的 table_open_cachetable_definition_cache

  • tune_buffer_pool – 減少緩衝集區的大小以釋出一些記憶體,並讓資料庫伺服器能夠處理連線。Aurora MySQL 3.06 版和更新版本支援此回應。

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

在低於 3.06 的 Aurora MySQL 版本中,對於記憶體小於或等於 4 GiB 的資料庫執行個體類別,當執行個體處於記憶體壓力下時,預設動作包括 printdeclinetunekill_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 全域狀態變數