故障診斷 Aurora MySQL 資料庫記憶體不足的問題 - Amazon Aurora

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

故障診斷 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_cachetable_definition_cache) 的記憶體。最終,當系統不再記憶體不足時,Aurora MySQL 會將記憶體使用量設回正常情況。

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

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

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

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