Mysql
如何使用 MySQL / Amazon RDS 調試鎖定超時?
我們有一個託管在亞馬遜網路服務上的網路應用程序。我們的數據庫是一個執行 5.1.57 的多 az RDS MySQL 伺服器,並且有 3-4 個應用伺服器與之通信。
今天,我們開始看到很多錯誤,例如“超過鎖定等待超時;嘗試重新啟動事務”——幾乎 1% 的 POST 請求都看到了這種情況。
網站上執行的程式碼沒有任何修改。沒有架構更改。我們的流量沒有大的高峰。我一直在查看正在執行的程序,似乎沒有一個是失控的。
我嘗試將我們的 RDS 實例從小擴展到大,但沒有任何效果。
兩天前,亞馬遜出現了一些中斷。作為從中恢復的一部分,我們的 RDS 伺服器和我們的應用伺服器最終位於不同的可用區,但都在同一個區域內。但是昨天,一切都很好,所以我不相信這是相關的。
鎖超時存在於不同類型的請求中,並且發生在不同的 InnoDB 表中。
我注意到當我們開始看到問題時打開的連接數量猛增,但它們可能是症狀而不是原因。
我接下來要調試什麼?
可能發生的是支持 RDS 實例的一個或多個 EBS 卷上的 IO 失去。由於 EBS 重新鏡像而減少的 IO 數量對數據庫的影響非常顯著。
如果您為高級支持付費,該團隊可以為您查看類似的詳細資訊,或者您可以嘗試在 AWS 論壇上提問。RDS 工程師可能會確認潛在的 EBS 問題或原因是什麼。