码迷,mamicode.com
首页 > 数据库 > 详细

mysql 8小时空闲后连接失效的解决

时间:2015-07-23 21:14:32      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

查了一下发现应用程序和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小时空闲后连接失效的解决

标签:

原文地址:http://www.cnblogs.com/leov/p/4671398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!