CCF 201509-1
問題
在使用MySQL資料庫的時候,經常會遇到這麼一個問題,就是“Can not connect to MySQL server. Too many connections
”-mysql 1040錯誤,這是因為訪問MySQL且還未釋放的連線數目已經達到MySQL的上限。通常,mysql的最大連線數預設是100, 最大可以達到16384。
常用的有兩種方式修改最大連線數。
解決方式一:通過命令
可以通過 set GLOBAL max_connections=100;
命令將最大連線數設定為100,此方法是即時生效的,不需要重啟mysql服務。如下圖所示:
show variables like "max_connections";
需注意的是,要通過root許可權的mysql帳號才能操作,否則會報“1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation”
的錯誤。
同時,從上圖也可以看出,設定max_connections最小值為1。
設定完成後,我再通過另一個終端連線時,就報出瞭如下的錯誤提示:1040-Too many connections
。
解決方式二:修改my.cnf
開啟mysql的配置檔案vim /etc/my.cnf
,加入max_connections=100一行
(如果有,直接修改值即可),然後重啟服務:/etc/init.d/mysqld restart
區別:
1.通過修改配置檔案,需要重啟服務;而用命令修改,即時生效。
2.採用修改配置檔案的方式,更穩定可靠。因為如果配置檔案中有max_connections=100
,再去用命令修改的話,一旦重啟mysql服務後,會重新以配置檔案中指定的連線數為準。
總結:
在修改最大連線數的時候會有這樣一個疑問—這個值是不是越大越好,或者設定為多大才合適?這個引數的大小要綜合很多因素來考慮,比如使用的平臺所支援的執行緒庫數量(windows只能支援到2048)、伺服器的配置(特別是記憶體大小)、每個連線佔用資源(記憶體和負載)的多少、系統需要的響應時間等。可以在global或session範圍內修改這個引數。連線數的增加會帶來很多連鎖反應,需要在實際中避免由此引發的負面影響。希望本文大家使用mysql有所幫助。