mysql 8小時空閑後串連失效的解決

來源:互聯網
上載者:User

標籤:

查了一下發現應用程式和mysql資料庫建立串連,如果超過8小時應用程式不去訪問資料庫,資料庫就斷掉串連 。這時再次訪問就會拋出異常。

關於mysql自動斷開的問題研究結果如下,

1、在自己的程式中插入定時訪問資料庫的方法,比如使用Timer,Quartz或者spring中簡易Quartz。

2、在mysql中有相關參數設定,當資料庫連接空閑一定時間後,伺服器就會斷開等待逾時的串連:
相關參數
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 |
+--------------------------------+-------+

同一時間,interactive_timeout,wait_timeout 這兩個參數只有一個起作用。

到底是哪個參數起作用,和使用者串連時指定的串連參數相關,預設情況下是使用wait_timeout。

我在設定檔中將wait_timeout修改後在mysql中查尋到還是不起作用,於是將這兩個參數都修改了,重新查詢wait_timeout的值後才顯示修改後的。

2、修改參數
這兩個參數的預設值是8小時(60*60*8=28800)。測試過將這兩個參數改為0,系統自動將這個值設定為1。也就是說,不能將該值設定為永久。
將這2個參數設定為24小時(60*60*24=86400)。
set interactive_timeout=86400;
set wait_timeout=86400;

也可以修改my.cof,修改後重起mysql
開啟/etc/my.cnf,在屬性群組mysqld下面添加參數如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000

如果一段時間內沒有資料庫訪問則mysql自身將切斷串連,之後訪問java訪問串連池時對資料庫的資料通道早就關閉了

mysql 8小時空閑後串連失效的解決

聯繫我們

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