1. 程式人生 > 資料庫 >Mysql錯誤:Too many connections的解決方法

Mysql錯誤:Too many connections的解決方法

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−n‘maxconnection′

MYSQLHOME/bin/mysqldsafe檔案例如:/usr/local/mysql/bin/mysqldsafe這個檔案grep−n‘maxconnection′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

所以要麼增大連線數,要麼殺掉無用連線,推薦後者。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。