什麼原因可能導致 AWS RDS 連接激增
這是我第一次在 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 個時,執行命令這會在某處轉儲所有活動連接,以便您稍後查看。