MySQL報錯“too many connections”通常是由于數據庫的最大連接數超過了MySQL配置的最大限制。這可能是由于數據庫的并發連接過多,或者存在一些連接沒有被正確關閉。這里給出一些可能的解決方案:
1、linux登錄mysql:
mysql -u root -p;
2、查看mysql允許的最大連接數
show variables like '%max_connections%';
3、查看這次mysql服務啟動到現在,同一時刻最多mysql有多少連接
show status like 'Max_used_connections';
4、修改mysql最大連接數
set global max_connections=1000;
5、以上步驟修改后雖然能登錄,但仍有隱患,我們應該把那些sleep的連接殺掉
(1)查看所有連接狀態,會發現很多狀態是sleep的
show processlist ;
(2)修改wait_timeout
wait_timeout — 指的是mysql在關閉一個非交互的連接之前所要等待的秒數
如果你沒有修改過MySQL的配置,wait_timeout的初始值是28800
wait_timeout 過大有弊端,其體現就是MySQL里大量的SLEEP進程無法及時釋放,拖累系統性能,不過也不能把這個指設置的過小,否則你可能會遭遇到“MySQL has gone away”之類的問題
set global wait_timeout=1000;
注意事項:
在高并發場景下,可以考慮設置max_user_connections參數來限制單個用戶的最大連接數。
確保MySQL服務器的資源(如內存、CPU)不是瓶頸,因為資源不足也可能導致連接問題。
定期審查和調整數據庫的配置參數,以適應業務的發展和變化。