您好,登錄后才能下訂單哦!
Too many connections
從字面理解,mysql連接數過多。當連接數量過多,且來不及釋放時便會出現此錯誤。
查看mysql當前連接信息,特別要注意sleep休眠狀態的連接。
show full processlist;
Command 狀態:
- SLEEP
線程正在等待客戶端發送新的請求。
- QUERY
線程正在執行查詢或者正在將結果發送給客戶端。- LOCKED
在MYSQL服務層,該線程正在等待表鎖。在存儲引擎級別實現的鎖,如INNODB的行鎖,并不會體現在線程狀態中。對于MYISAM來說這是一個比較典型的狀態。但在其他沒有行鎖的引擎中也經常會出現。ANALYZING AND STATISTICS 線程正在收集存儲引擎的統計信息,并生成查詢的執行計劃。- COPYING TO TMP TABLE (ON DISK)
線程正在執行查詢,并且將其結果集都復制到一個臨時文件中,這種狀態一般要么是在做GROUP BY操作,要么是文件排序操作,或者是UNION操作。如果這個狀態后面還有ON DISK的標,那表示MYSQL正在將一個內存臨時表放到磁盤上。- SORTING RESULT
線程正在對結果集進行排序。- SENDING DATA
線程可能在多個狀態之間傳送數據,或者生成結果集,或者在向客戶端返回數據。
查看mysql設置的最大連接數
show global variables like 'max_connections';
服務器響應的最大連接數
show global variables like 'max_user_connections';
建議:服務器響應的最大連接數值占服務器上限連接數值的比例值在10%以上,如果在10%以下,說明mysql服務器最大連接上限值設置過高。
max_user_connections/max_connections * 100% >=10%
如果最大連接數量沒問題,而sleep休眠狀態的連接過多,則應該從兩方面注意:
需要主題:wait_timeout設置過大有弊端,其體現就是MySQL里大量的SLEEP進程無法及時釋放,拖累系統性能。如果設置過小,可能會遭遇到“MySQL has gone away”之類的問題。
要想從根本上解決sleep過多的問題,需從以下面三點排查:
最后快速解決過程
set GLOBAL max_connections = 500;
set GLOBAL wait_timeout = 300;
set GLOBAL interactive_timeout = 600;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。