
我的網頁應用程式出現連接過多錯誤:http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
因此,我想連接到資料庫,以便show full processes/g
可以調試程式碼。我正在使用以下 CLI 命令:
mysql -h domain.eu-west-1.rds.amazonaws.com -P 3306 -u username -p
我使用的使用者名稱是啟動實例時建立的主用戶名。據我了解,mysql 總是保持一個空閒連接,以允許具有超級權限的帳戶進行連接,但是當我這樣做時,我會收到太多錯誤回應。
查看配置,主用戶名似乎僅對資料庫擁有超級權限,而對網域沒有超級權限,這是正確的嗎?我還能如何登入mysql來調試伺服器?
答案1
沒錯,RDS不允許任何帳戶擁有該SUPER
權限。這是 RDS 中的一個不幸的限制。
不過,您的問題聽起來似乎可以透過增加實例的 RDS 參數組來「修復」(或至少解決)max_connect_errors
,這將導致 RDS 更能容忍來自您的 IP 的連接錯誤。
你的問題讓我想知道你是否有太多的聯繫......或者太多的錯誤。
如果發生錯誤,那麼您可以嘗試從不同的IP存取它,您可以使用 清除計數器FLUSH HOSTS;
。
在參數組中設定log_warnings
= 2 將增加連線錯誤的日誌記錄量(錯誤日誌可透過控制台取得),且此可能幫助您首先找出導致主機錯誤計數增加的原因。
參數組變更將盡可能「熱」套用到伺服器,但參數組旁的「實例詳細資料」畫面將提示您套用變更是掛起、需要重新啟動還是已完成(在-同步)。
如果問題只是“連接太多”,那麼唯一的解決方案(如果您無法強制應用程式刪除某些連接)就是重新啟動實例並獲取連接插槽,並保持連接,以便您可以在以下情況下進行訪問:問題又回來了。