mysql超出最大串連數解決方案

來源:互聯網
上載者:User

遇到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種方法的介紹,望你能有所收穫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.