近一段時間,很多部門同事反映在使用mysql的過程出現資料庫連接自動斷開的問題,我對該問題做了一些實驗。
關於mysql自動斷開的問題研究結果如下,在mysql中有相關參數設定,當資料庫連接空閑一定時間後,伺服器就
會斷開等待逾時的串連:
1、相關參數,紅色部分
mysql> show variables like '%timeout%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout| 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+--------------------------+-------+
同一時間,這兩個參數只有一個起作用。到底是哪個參數起作用,和使用者串連時指定的串連參數相關,預設情況下是使用
wait_timeout。我建議是將這兩個參數都修改,以免引起不必要的麻煩。
2、修改參數
這兩個參數的預設值是8小時。我測試過將這兩個參數改為0,結果出人意料,系統自動將這個值設定為1。換句話說,不能將該值設定為永久。我建議為參數值加三個0,這樣肯定可以滿足我們的應用要求。
修改操作:開啟/etc/my.cnf,在屬性群組mysqld下面添加參數如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
windows下在my.ini文中增加:
interactive_timeout=28800000
wait_timeout=28800000