問題
在使用mysql數(shù)據(jù)庫的時(shí)候,經(jīng)常會遇到這么一個(gè)問題,就是“Can not connect to MySQL server. Too many connections”-mysql 1040錯(cuò)誤,這是因?yàn)樵L問MySQL且還未釋放的連接數(shù)目已經(jīng)達(dá)到MySQL的上限。通常,mysql的最大連接數(shù)默認(rèn)是100, 最大可以達(dá)到16384。
常用的有兩種方式修改最大連接數(shù)。
解決方式一:通過命令
可以通過 set GLOBAL max_connections=100; 命令將最大連接數(shù)設(shè)置為100,此方法是即時(shí)生效的,不需要重啟mysql服務(wù)。如下圖所示:
需注意的是,要通過root權(quán)限的mysql帳號才能操作,否則會報(bào)“1227 – Access denied; you need (at least one of) the SUPER privilege(s) for this operation”的錯(cuò)誤。
同時(shí),從上圖也可以看出,設(shè)置max_connections最小值為1。
設(shè)置完成后,我再通過另一個(gè)終端連接時(shí),就報(bào)出了如下的錯(cuò)誤提示:1040-Too many connections。
解決方式二:修改my.cnf
打開mysql的配置文件vim /etc/my.cnf,加入max_connections=100一行(如果有,直接修改值即可),然后重啟服務(wù):/etc/init.d/mysqld restart,此時(shí)生效。
區(qū)別:
1.通過修改配置文件,需要重啟服務(wù);而用命令修改,即時(shí)生效。
2.采用修改配置文件的方式,更穩(wěn)定可靠。因?yàn)槿绻渲梦募杏衜ax_connections=100,再去用命令修改的話,一旦重啟mysql服務(wù)后,會重新以配置文件中指定的連接數(shù)為準(zhǔn)。
總結(jié):
在修改最大連接數(shù)的時(shí)候會有這樣一個(gè)疑問—這個(gè)值是不是越大越好,或者設(shè)置為多大才合適?這個(gè)參數(shù)的大小要綜合很多因素來考慮,比如使用的平臺所支持的線程庫數(shù)量(windows只能支持到2048)、服務(wù)器的配置(特別是內(nèi)存大小)、每個(gè)連接占用資源(內(nèi)存和負(fù)載)的多少、系統(tǒng)需要的響應(yīng)時(shí)間等。可以在global或session范圍內(nèi)修改這個(gè)參數(shù)。連接數(shù)的增加會帶來很多連鎖反應(yīng),需要在實(shí)際中避免由此引發(fā)的負(fù)面影響。希望本文大家使用mysql有所幫助。