Too many connections
從字面理解,MySQL連接數(shù)過多。當連接數(shù)量過多,且來不及釋放時便會出現(xiàn)此錯誤。創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、廣元網(wǎng)絡(luò)推廣、成都小程序開發(fā)、廣元網(wǎng)絡(luò)營銷、廣元企業(yè)策劃、廣元品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供廣元建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
查看mysql當前連接信息,特別要注意sleep休眠狀態(tài)的連接。
show full processlist;
Command 狀態(tài):
- SLEEP
線程正在等待客戶端發(fā)送新的請求。
- QUERY
線程正在執(zhí)行查詢或者正在將結(jié)果發(fā)送給客戶端?!?/li>- LOCKED
在MYSQL服務(wù)層,該線程正在等待表鎖。在存儲引擎級別實現(xiàn)的鎖,如INNODB的行鎖,并不會體現(xiàn)在線程狀態(tài)中。對于MYISAM來說這是一個比較典型的狀態(tài)。但在其他沒有行鎖的引擎中也經(jīng)常會出現(xiàn)。ANALYZING AND STATISTICS 線程正在收集存儲引擎的統(tǒng)計信息,并生成查詢的執(zhí)行計劃。- COPYING TO TMP TABLE (ON DISK)
線程正在執(zhí)行查詢,并且將其結(jié)果集都復(fù)制到一個臨時文件中,這種狀態(tài)一般要么是在做GROUP BY操作,要么是文件排序操作,或者是UNION操作。如果這個狀態(tài)后面還有ON DISK的標,那表示MYSQL正在將一個內(nèi)存臨時表放到磁盤上。- SORTING RESULT
線程正在對結(jié)果集進行排序。- SENDING DATA
線程可能在多個狀態(tài)之間傳送數(shù)據(jù),或者生成結(jié)果集,或者在向客戶端返回數(shù)據(jù)。
查看mysql設(shè)置的最大連接數(shù)
show global variables like 'max_connections';
服務(wù)器響應(yīng)的最大連接數(shù)
show global variables like 'max_user_connections';
建議:服務(wù)器響應(yīng)的最大連接數(shù)值占服務(wù)器上限連接數(shù)值的比例值在10%以上,如果在10%以下,說明mysql服務(wù)器最大連接上限值設(shè)置過高。
max_user_connections/max_connections * 100% >=10%
如果最大連接數(shù)量沒問題,而sleep休眠狀態(tài)的連接過多,則應(yīng)該從兩方面注意:
需要主題:wait_timeout設(shè)置過大有弊端,其體現(xiàn)就是MySQL里大量的SLEEP進程無法及時釋放,拖累系統(tǒng)性能。如果設(shè)置過小,可能會遭遇到“MySQL has gone away”之類的問題。
要想從根本上解決sleep過多的問題,需從以下面三點排查:
最后快速解決過程
set GLOBAL max_connections = 500;
set GLOBAL wait_timeout = 300;
set GLOBAL interactive_timeout = 600;