Mysql

什麼原因可能導致 AWS RDS 連接激增

  • August 28, 2019

這是我第一次在 AWS 上使用 RDS,我使用 t2.medium 實例執行 MySQL Aurora 並使用預設配置。CPU 使用率和數據庫連接非常正常,直到發生“某些事情”,這導致數據庫連接一直達到最大值(t2.medium 為 80 個連接)。

在此處輸入圖像描述

我只有一個 Web 應用程序,在 EC2 實例上執行。當數據庫連接數達到最大值時,EC2 實例的 CPU 使用率絕對正常(25-30%),但所有連接數據庫實例的嘗試都會導致“連接數過多”。

在此處輸入圖像描述

我當時還檢查了數據庫實例的 CPU 使用率——它沒有顯示高負載信號。在罷工期間,CPU 使用率下降到 20%,並始終保持該比率。

在此處輸入圖像描述

我不明白的事情:數據庫連接已達到最大值,但為什麼數據庫 CPU 使用率下降了?由於這些連接中查詢的計算,它不應該也達到最大值嗎?

請幫我理解,非常感謝。

(當第二次罷工發生時,我不得不將 RDS 實例的大小調整為 r4.large;我現在仍在執行它,直到我發現問題……)

如果您執行show processlist;,它將向您顯示針對您的數據庫執行的所有連接。執行show status like 'Conn%'可以顯示有多少連接處於活動狀態

您可能認為大量連接會增加 CPU,但最終這取決於這些連接試圖完成什麼,如果它們沒有做太多但阻止您作為主應用程序執行它們的連接,那麼正常的處理級別將在您不執行正常流程時關閉

煩人的事情是能夠執行實際需要連接到數據庫的 show processlist 命令,而當您處於最大連接數時,您將無法連接到數據庫。

一個小小的解決方法是增加您的最大連接數(如果可以的話)並在某個地方設置一些經常執行的監控(每 5 分鐘就會擷取一次),當您的連接數超過 50 個時,執行命令這會在某處轉儲所有活動連接,以便您稍後查看。

引用自:https://dba.stackexchange.com/questions/207061