萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql超出最大連接數解決方法

mysql超出最大連接數解決方法

可能有不少朋友會碰到關在使用mysql時提示超出最大連接數這個問題,下面我來給大家介紹mysql超出最大連接數原因分析與解決辦法,有需要了解的朋友可參考。

遇到mysql超出最大連接數,相信不少人第一反應就是查看mysql進程,看有沒有慢查詢,當然這個做法是完全正確的!
但是很多時候真正的問題不在這裡。
今天有遇到同樣的問題,一味查看mysql進程和慢查詢日志,無果。
後來老大提點了一下,查看一下nginx日志,發現有一兩個訪問執行時候比較長,然後使用top命令查看了一下服務器負載,驚了,居然超高!
最後發現原來有一台web分流主機掛了,導致另外幾台web主機負載增高,從而導致了php-fpm的執行效率降低。
那麼這跟mysql有什麼關系呢?原因很簡單,因為php執行時間過長,mysql連接遲遲未釋放,就會導致連接數過多出現。
最後總結:其實很多時候,一個問題的根本原因並不是那麼直接的呈現出來,需要自己去跟蹤。
老大有一句很實用的話:遇到問題先查日志(mysql、php、nginx等)


windows2003系統

增加默認MYSQL連接數的方法

方法一:進入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改為 max_connections=1000 服務裡重起MYSQL即可

方法二:MySQL的最大連接數默認是100客戶端登錄:mysql -uusername -ppassword

設置新的最大連接數為200:mysql> set GLOBAL max_connections=200

顯示當前運行的Query:mysql> show processlist

顯示當前狀態:mysql> show status

退出客戶端:mysql> exit

查看當前最大連接數:mysqladmin -uusername -ppassword variables

linux系統

以centos 4.4 下面的MySQL 5.0.33 手工編譯版本為例說明:

 代碼如下 復制代碼

    vi /usr/local/MySQL/bin/MySQLd_safe

找到safe_MySQLd編輯它,找到MySQLd啟動的那兩行,在後面加上參數 :

 代碼如下 復制代碼

    -O max_connections=1500

具體一點就是下面的位置:

用說明:

 代碼如下 復制代碼

    then $NOHUP_NICENESS $ledir/$MySQLD 
    $defaults --basedir=$MY_BASEDIR_VERSION 
    --datadir=$DATADIR $USER_OPTION 
    --pid-file=$pid_file 
    --skip-external-locking 
    -O max_connections=1500
    >> $err_log 2>&1 else 
    eval "$NOHUP_NICENESS $ledir/$MySQLD 
    $defaults --basedir=$MY_BASEDIR_VERSION 
    --datadir=$DATADIR $USER_OPTION 
    --pid-file=$pid_file 
    --skip-external-locking $args 
    -O max_connections=1500 >>
    $err_log 2>&1" 

保存。

 代碼如下 復制代碼

    # service MySQLd restart 
    # /usr/local/MySQL/bin/MySQLadmin -uroot -p variables 

輸入root數據庫賬號的密碼後可看到

max_connections 1500 即新改動已經生效。

還有一種方法,

修改原代碼:

解開MySQL的原代碼,進入裡面的sql目錄修改MySQLd.cc找到下面一行:

 代碼如下 復制代碼

    {"max_connections", OPT_MAX_CONNECTIONS, 
    "The number of simultaneous clients allowed.", (gptr*) &max_connections, 
    (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1, 
    0}, 

把它改為:

 代碼如下 復制代碼

    {"max_connections", OPT_MAX_CONNECTIONS, 
    "The number of simultaneous clients allowed.", (gptr*) &max_connections, 
    (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1, 
    0}, 

存盤退出,然後./configure ;make;make install可以獲得同樣的效果。以上的相關內容就是對修改MySQL最大連接數的3種方法的介紹,望你能有所收獲。

copyright © 萬盛學電腦網 all rights reserved