如何增加 Amazon RDS for MySQL 執行個體的最大連線數?

上次更新日期︰2021 年 8 月 27 日

我想增加 Amazon Relational Database Service (Amazon RDS) for MySQL 的最大連線數。我要如何完成此作業以及使用 max_connections 參數的最佳實務有哪些?

解決方案

在 Amazon RDS for MySQL 中,max_connections 指標會監控同時用戶端連線的設定 (允許) 數目上限。

根據預設,max_connections 參數是基於下列 Amazon RDS for MySQL 內的公式 (從 DBInstanceClassMemory 值計算):

max_connections = DBInstanceClassMemory/12582880

預設的 max_connections 值 取決於 Amazon RDS 執行個體所使用的執行個體類別。具有更多可用記憶體的資料庫執行個體類別也支援大量的資料庫連線。

若要檢查目前的 max_connections 值,請在連線到 Amazon RDS for MySQL 執行個體後執行下列命令:

SHOW GLOBAL VARIABLES LIKE 'max_connections';

當您的用戶端連線超過 max_connections 值時,您會收到「連線過多」錯誤

下列因素可能會造成您的資料庫連線超過 max_connections 值:

  • 由於工作負載或表格/資料列層級鎖定增加,導致資料庫執行個體的用戶端/應用程式連線數目增加。
  • 操作結束後,不當關閉用戶端/應用程式連線。當伺服器連線未正確關閉時,用戶端應用程式會開啟新的連線。經過一段時間後,這些新的伺服器連線可能會導致您的執行個體超過 max_connections 值。若要列出 MySQL 資料庫執行個體中的所有作用中連線,請使用顯示完整處理清單命令。
  • 睡眠連線 (也稱為非作用中的開啟連線) 是由較高的連線逾時參數 (例如:wait_timeoutInteractive_timeout) 所造成的。若您設定的連線限制過高,即使您未使用這些連線,也可能會增加記憶體使用量。因此,當應用程式伺服器嘗試開啟與資料庫的所有用戶端連線時,可能會拒絕這些連線。若要終止睡眠連線,請使用 mysql.rds_kill 操作。
    秘訣:最佳實務是只設定應用程式效能所需的作用中連線。您也可以考慮升級到較大的 Amazon RDS 資料庫執行個體類別。

增加 Amazon RDS for MySQL 執行個體的 max_connections_parameter

您可以使用下列方法增加資料庫執行個體的最大連線數:

  • 使用更多記憶體將資料庫執行個體擴充規模至資料庫執行個體類別。
    警告:修改 Amazon RDS 資料庫執行個體時,會發生停機時間。
  • 請使用自訂執行個體層級參數群組,為 max_connections 參數設定較大的值。增加 max_connections 參數不會導致任何中斷。
  • 如果您的資料庫執行個體使用預設參數群組,請將參數群組變更為自訂參數群組。請務必將自訂資料庫參數群組與您的 Amazon RDS for MySQL 執行個體建立關聯,然後重新啟動執行個體。新的自訂參數群組與資料庫執行個體建立關聯後,您可以修改 max_connections 參數值。
    注意:變更參數群組可能會導致中斷。如需詳細資訊,請參閱使用資料庫參數群組

若要建立自訂參數群組並修改 max_connections 參數,請參閱如何修改 Amazon RDS 資料庫參數群組的值?

設定 max_connections 參數的最佳實務

使用資料庫執行個體的 max_connections 參數時,請務必考慮下列最佳實務:

  • 預設連線限制會針對其他主要記憶體取用者 (例如:緩衝集區) 使用預設值的系統進行調整。最佳實務是為實體類別擴充規模,而不是變更執行個體類別值。但是,如果您的執行個體有大量的可用記憶體,那麼您可以手動變更此參數。若您變更了這些資料庫執行個體的設定,請考慮調整連線限制,以處理資料庫執行個體上可用記憶體增減。
  • 請將 max_connections 值設定為稍高於您預期在每個資料庫執行個體上開啟的連線數目上限。
  • 如果您也啟用了效能結構描述,請密切注意 max_connections 參數設定。效能結構描述記憶體結構會根據伺服器組態變數自動調整大小。您設定的變數越高,效能結構描述就會使用越多的記憶體。在極端的情況下,這可能會導致較小的執行個體類型 (例如:T2 和 T3) 發生記憶體不足的問題。如果您使用的是效能結構描述,那麼最佳實務是將 max_connections 設定保留為預設值。如果您打算大幅增加 max_connections 值 (高於預設值),請考慮停用效能結構描述。
    注意:若您啟用 Amazon RDS for MySQL 資料庫執行個體的績效詳情,則效能結構描述也會自動啟用。
  • 當您調整 max_connect 參數時,請務必同時檢閱下列與 MySQL 連線相關的參數:
    wait_timeout:伺服器在關閉非互動式 TCP/IP 或 Unix 檔案連線前等待活動的秒數。
    Interactive_timeout:伺服器在關閉互動式連線之前等待活動的秒數。
    net_read_timeout:在刪除讀取之前等待更多來自 TCP/IP 連線資料的秒數。
    net_write_timeout:在刪除寫入之前等待 TCP/IP 連線上寫入區塊的秒數。
    max_execution_time:SELECT 陳述式的執行逾時,以毫秒為單位。
    max_connect_errors:如果中斷連線數目超過此值,主機將被封鎖而無法再次連線。
    max_user_connections:任何給定 MySQL 帳戶所允許的同時連線最大數量。

注意:本文章不包含所列參數的建議值,因為這些值會根據您的使用案例而有所不同。


此文章是否有幫助?


您是否需要帳單或技術支援?