程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL連接too many connection錯誤並且啟動時間特別長

MySQL連接too many connection錯誤並且啟動時間特別長

編輯:MySQL綜合教程

本文章來給各位同學介紹MySQL連接的時候出現“too many connection\"錯誤並且啟動時間特別長的解決辦法,有面要了解的朋友可參考。

昨天一台服務器上出現了一個奇怪的問題,正常訪問的時候MySQL出現 "error 1040, too many connection" 錯誤提示,造成這個原因通常是max_connections設置的太小或者wait_timeout的值設置的太長造成連接超時時間太長。所以首先想到的是使用mysqladmin查看max_connections的值為多少

產生這種問題的原因是:

連接數超過了 MySQL 設置的值,與 max_connections 和 wait_timeout  都有關系。wait_timeout 的值越大,連接的空閒等待就越長,這樣就會造成當前連接數越大。

解決方法:

 代碼如下 復制代碼

1.[root@localhost bin]$ ./mysqladmin -uroot -p variables | grep "max_conn"

輸入數據庫的密碼之後就可以看到max_connections的值,如果太小的話(默認為100)需要將該值設置的大一些。如果MySQL不允許中斷的話可以登錄MySQL之後,然後設置當前max_connections的值

 代碼如下 復制代碼

1.[root@localhost bin]$ ./mysql -uroot -p
2.mysql> set GLOBAL max_connections=1024;


這裡還需要注意的是Linux下如果系統的max user processes低於max_connections的值會出現“Can't create a new thread (errno 11); ”錯誤,解決方法可以參考MySQL出現Can't create a new thread (errno 11); 的解決辦法。上面的設置只是在當前運行的狀態下有效,如果mysql重啟之後設置失效了,所以終極的方法是修改mysql的配置文件my.cnf,然後在[mysqld]下面設置max_connections的值。

但是奇怪的是這樣設置之後還是依然出現那個錯誤,於是登錄mysql之後使用 show processlist; 命令查看連接,然後使用kill命令刪除了一些Sleep狀態的連接,但是過一會兒又會出現too many connection的錯誤提示。另外我還注意到一個現象,就是MySQL啟動或重啟的時候時間特別長,數據庫大概有2G左右的數據,但是也不至於啟動這麼慢吧?後來想到是不是數據庫文件有問題,於是又使用了修復命令對每個表進行了修復,但是過一兩個小時之後還是會出現上面的錯誤。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved