程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql 8小時空閒後連接失效的解決,mysql8小時

mysql 8小時空閒後連接失效的解決,mysql8小時

編輯:MySQL綜合教程

mysql 8小時空閒後連接失效的解決,mysql8小時


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

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

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

2、在mysql中有相關參數設定,當數據庫連接空閒一定時間後,服務器就會斷開等待超時的連接:
相關參數

mysql> show variables like '%timeout%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 10       |
| delayed_insert_timeout      | 300      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50       |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout         | 28800    |
| lock_wait_timeout           | 31536000 |
| net_read_timeout            | 30       |
| net_write_timeout           | 60       |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout           | 3600     |
| wait_timeout                | 28800    |
+-----------------------------+----------+
12 rows in set

 

同一時間,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訪問連接池時對數據庫的數據通道早就關閉了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved