共計 1821 個字符,預計需要花費 5 分鐘才能閱讀完成。
今天就跟大家聊聊有關解決 MySQL 錯誤 Too many connections 的方法是什么,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
MySQL 數據庫 Too many connections
出現這種錯誤明顯就是 mysql_connect 之后忘記 mysql_close;
當大量的 connect 之后,就會出現 Too many connections 的錯誤,mysql 默認的連接為 100 個,而什么情況下會出現這種錯誤呢?
正常的 mysql_connect 之后調用 mysql_close()關閉連接
但在連接錯誤時,會者 mysql_real_query()出現錯誤退出時,可能忘記 mysql_close();
所以在程序 return 之前一定要判斷是否 close(), 最穩妥的方法就是在寫任何函數時都只有一個出口!
還有可以通過修改 mysql 配置文件來加大允許連接的數量!
有時你的服務器是經常出現這樣的錯誤呢:
錯誤信息如下:
Can not connect to MySQL server Error: Too many connections Errno.: 1040 Similar error report has beed dispatched to administrator before.
從官方文檔知道 Linux 上面編譯安裝的 mysql 默認的連接為 100 個
文檔:http://dev.mysql.com/doc/refman/5.0/en/too-many-connections.html
mysql 官方告訴我們需要修改 max_connections 的值, 那么我們怎么去修改呢?有兩種方法
1、修改配置文件文件
修改 /etc/my.cnf 這個文件,在 [mysqld] 中新增 max_connections=N,如果你沒有這個文件請從編譯源碼中的 support-files 文件夾中復制你所需要的 *.cnf 文件為到 /etc/my.cnf。我使用的是 my-medium.cnf, 中型服務器配置。例如我的[mysqld] 的內容如下:
[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
由于對 mysql 還不是很熟悉,所以很多參數沒有修改。哈哈。。
2、非使用 mysqld 腳本自動啟動的用戶。
修改 MYSQLHOME/bin/mysqldsafe 文件例如:/usr/local/mysql/bin/mysqldsafe 這個文件 grep minus;n lsquo;maxconnection prime;
MYSQLHOME/bin/mysqldsafe 文件例如:/usr/local/mysql/bin/mysqldsafe 這個文件 grep minus;n lsquo;maxconnection prime;MYSQL_HOME/bin/mysqld_safe
修改對應行號的 max_connections 參數值
3、服務器登錄 mysql:mysql -u root -p
百分之九十進不去,進不去的執行重啟命令:/etc/init.d/mysql restart(centos 系統)
此時重啟 mysql 就能連接 mysql 了,如果還有時間,可以繼續下一步,治病要治本
打開配置文件 添加一下配置 vi /etc/my.cnf
wait_timeout = 600 interactive_timeout = 600
再次重啟 mysql 即可
原理解答
mysql 默認 100 連接數,超過則連不上,實際工作的連接數遠遠沒有 100,大部分在 sleep
所以要么增大連接數,要么殺掉無用連接,推薦后者。
看完上述內容,你們對解決 MySQL 錯誤 Too many connections 的方法是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。