mysql串連數過多解決方案

來源:互聯網
上載者:User

標籤:原因   roo   原來   uptime   erro   lwp   bash   配置   conf   

mysql 預設連結數是100個 最大是16384。 原則:想盡一切辦法不重啟 導致原因:

出現這種錯誤明顯就是 mysql_connect 之後忘記 mysql_close;
當大量的connect之後,就會出現Too many connections的錯誤,mysql預設的串連為100個,而什麼情況下會出現這種錯誤呢?

正常的mysql_connect 之後調用 mysql_close()關閉串連
但在串連錯誤時,會者mysql_real_query()出現錯誤退出時,可能忘記mysql_close();
所以在程式return 之前一定要判斷是否close(),最穩妥的方法就是在寫任何函數時都只有一個出口!

查看連結:查看當前串連數
./mysqladmin -uroot -p1234.com statusUptime: 1370150  Threads: 1 (當前串連數) Questions: 79  Slow queries: 0  Opens: 33  Flush tables: 1  Open tables: 26  Queries per second avg: 0.000
./mysql -uroot -p1234.com -e ‘show status‘ | grep -i  Threads Delayed_insert_threads    0Slow_launch_threads    0Threads_cached    1Threads_connected    1Threads_created    2Threads_running    1 ##(當前串連數)
mysql> show status like ‘Threads%‘;+-------------------+-------+| Variable_name    | Value |+-------------------+-------+| Threads_cached    | 1    || Threads_connected | 1    || Threads_created  | 2    || Threads_running  | 1    |   ###當前串連數+-------------------+-------+4 rows in set (0.00 sec)

查看最大串連數

[[email protected] bin]# ./mysql -uroot -p1234.com -e ‘show variables‘ | grep max_connectionsmax_connections    500
mysql> show global variables like ‘max_conn%‘;+--------------------+-------+| Variable_name      | Value |+--------------------+-------+| max_connect_errors | 10    || max_connections    | 500  |## 最大串連數+--------------------+-------+2 rows in set (0.00 sec)
解決方案:想盡一切辦法不重啟 這種情況一般是進不去資料庫了,修改設定檔得重啟,對於線上的資料庫風險太大了,進入資料庫用sql修改,現在是進不去了   方法1:使用gdb工具 不用進入資料庫,不用重啟資料庫 方法如下:
[[email protected] bin]# gdb -p $(cat /data/mydata/xxx.pid) -ex "set max_connections=500" -batch  [New LWP 7667][New LWP 4816][New LWP 341][New LWP 338][New LWP 337][New LWP 336][New LWP 335][New LWP 331][New LWP 330][New LWP 329][New LWP 328][New LWP 327][New LWP 326][New LWP 325][New LWP 324][New LWP 323][New LWP 322][Thread debugging using libthread_db enabled]0x00000035654df1b3 in poll () from /lib64/libc.so.6
查看mysql pid位置的方法 在設定檔 my.cnf裡尋找用 ps -ef | grep mysql 尋找
mysql> show variables like ‘%pid%‘;+---------------+----------------------+| Variable_name | Value                |+---------------+----------------------+| pid_file      | /data/mydata/xxx.pid |+---------------+----------------------+1 row in set (0.00 sec)
修改完畢後 ,嘗試重新進入資料庫,並查看連結數

這種方法設定後,只是暫時的,資料庫重啟後,會變為原來的數值,要想永久,設定完後修改設定檔my.cnf


方法2 前提是還可以進入資料庫進入資料庫

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

顯示當前啟動並執行Query:mysql> show processlist

顯示目前狀態:mysql> show status

退出用戶端:mysql> exit

這種方法設定後,只是暫時的,資料庫重啟後,會變為原來的數值,要想永久,設定完後修改設定檔my.cnf

方法3:需要重啟資料庫修改 my.conf  max_connection = 1000;
類比mysql串連數過多 指令碼內容
#!/bin/bashset j=2while true do        let "j=j+1"/usr/local/mysql/bin/mysqlslap -a -c 500 -i 10 -uroot -p1234.comdone

運行此指令碼  ,然後導致mysql串連數過多無法串連,多試幾次確定無法串連  再用gdb工具測試

mysql串連數過多解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.