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