Mysql錯(cuò)誤:Too many connections的解決方法
MySQL數(shù)據(jù)庫(kù) Too many connections
出現(xiàn)這種錯(cuò)誤明顯就是 mysql_connect 之后忘記 mysql_close;
當(dāng)大量的connect之后,就會(huì)出現(xiàn)Too many connections的錯(cuò)誤,mysql默認(rèn)的連接為100個(gè),而什么情況下會(huì)出現(xiàn)這種錯(cuò)誤呢?
正常的mysql_connect 之后調(diào)用 mysql_close()關(guān)閉連接
但在連接錯(cuò)誤時(shí),會(huì)者mysql_real_query()出現(xiàn)錯(cuò)誤退出時(shí),可能忘記mysql_close();
所以在程序return 之前一定要判斷是否close(),最穩(wěn)妥的方法就是在寫(xiě)任何函數(shù)時(shí)都只有一個(gè)出口!
還有可以通過(guò)修改mysql配置文件來(lái)加大允許連接的數(shù)量!
有時(shí)你的服務(wù)器是經(jīng)常出現(xiàn)這樣的錯(cuò)誤呢:
錯(cuò)誤信息如下:
Can not connect to MySQL server
Error: Too many connections
Errno.: 1040
Similar error report has beed dispatched to administrator before.
從官方文檔知道Linux上面編譯安裝的mysql默認(rèn)的連接為100個(gè)
文檔:http://dev.mysql.com/doc/refman/5.0/en/too-many-connections.html
mysql官方告訴我們需要修改max_connections的值,那么我們?cè)趺慈バ薷哪??有兩種方法
1、修改配置文件文件
修改/etc/my.cnf這個(gè)文件,在[mysqld] 中新增max_connections=N,如果你沒(méi)有這個(gè)文件請(qǐng)從編譯源碼中的support-files文件夾中復(fù)制你所需要的*.cnf文件為到 /etc/my.cnf。我使用的是my-medium.cnf,中型服務(wù)器配置。例如我的[mysqld]的內(nèi)容如下
[mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 160M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M max_connections=1000
由于對(duì)mysql還不是很熟悉,所以很多參數(shù)沒(méi)有修改。哈哈。。
2、非使用mysqld腳本自動(dòng)啟動(dòng)的用戶(hù)。
修改MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep−n‘maxconnection′
MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep−n‘maxconnection′MYSQL_HOME/bin/mysqld_safe
修改對(duì)應(yīng)行號(hào)的max_connections參數(shù)值
3、服務(wù)器登錄mysql : mysql -u root -p
百分之九十進(jìn)不去,進(jìn)不去的執(zhí)行重啟命令 :/etc/init.d/mysql restart(centos系統(tǒng))
此時(shí)重啟mysql就能連接mysql了,如果還有時(shí)間,可以繼續(xù)下一步,治病要治本
打開(kāi)配置文件 添加一下配置 vi /etc/my.cnf
wait_timeout = 600 interactive_timeout = 600
再次重啟mysql即可
原理解答
mysql 默認(rèn)100 連接數(shù),超過(guò)則連不上,實(shí)際工作的連接數(shù)遠(yuǎn)遠(yuǎn)沒(méi)有100,大部分在sleep
所以要么增大連接數(shù),要么殺掉無(wú)用連接,推薦后者。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
mysql使用Haversine 公式和ST_Distance_Sphere 函數(shù)實(shí)現(xiàn)附近的人功能
使用 MySQL 來(lái)實(shí)現(xiàn)“附近的人”功能,可以通過(guò)Haversine 公式和ST_Distance_Sphere 函數(shù)兩種方式來(lái)實(shí)現(xiàn),這篇文章主要介紹了mysql實(shí)現(xiàn)附近的人功能,需要的朋友可以參考下2023-08-08MySQL:Unsafe statement written to the binary log using state
這篇文章主要介紹了MySQL:Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEM,需要的朋友可以參考下2016-05-05MySQL數(shù)據(jù)庫(kù)操作DQL正則表達(dá)式
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)操作DQL正則表達(dá)式,正則表達(dá)式描述了一種字符串匹配的規(guī)則,正則表達(dá)式本身就是一個(gè)字符串,使用這個(gè)字符串來(lái)描述、用來(lái)定義匹配規(guī)則,匹配一系列符合某個(gè)句法規(guī)則的字符串2022-07-07MySQL5.7 mysqldump備份與恢復(fù)的實(shí)現(xiàn)
這篇文章主要介紹了MySQL5.7 mysqldump備份與恢復(fù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11mysql數(shù)據(jù)庫(kù)互為主從配置方法分享
共有四臺(tái)機(jī)器:A(10.1.10.28),B(10.1.10.29),C(10.1.10.30),D(10.1.10.31)。配置后結(jié)果:A-C互為主從,B為A的slave,D為C的slave2012-03-03mysql啟動(dòng)報(bào)錯(cuò)Failed?to?start?LSB:start?and?stop?MySQL的問(wèn)題解決
本文主要介紹了mysql啟動(dòng)報(bào)錯(cuò)Failed?to?start?LSB:start?and?stop?MySQL的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Linux系統(tǒng)徹底卸載MySQL數(shù)據(jù)庫(kù)詳解
這篇文章主要介紹了Linux系統(tǒng)徹底卸載MySQL數(shù)據(jù)庫(kù),首先查詢(xún)系統(tǒng)是否安裝了mysql,如果安裝需要提前卸載,并刪除mysql安裝的組建服務(wù),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09MySQL使用binlog日志進(jìn)行數(shù)據(jù)庫(kù)遷移和數(shù)據(jù)恢復(fù)
MySQL的二進(jìn)制日志是MySQL數(shù)據(jù)庫(kù)中非常關(guān)鍵的一個(gè)組件,主要用于記錄所有數(shù)據(jù)庫(kù)表結(jié)構(gòu)或表數(shù)據(jù)改變的操作語(yǔ)句,binlog是MySQL數(shù)據(jù)復(fù)制的基礎(chǔ),并且常常被用于數(shù)據(jù)恢復(fù),本文給大家介紹了MySQL使用binlog日志進(jìn)行數(shù)據(jù)庫(kù)遷移和數(shù)據(jù)恢復(fù),需要的朋友可以參考下2024-04-04