鉴于mysql默许8小时三番两次无访谈,就能够断开.为此查了一晃材质,有同种比较轻易的缓和方案:

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访谈连接池时对数据库的数据通道早已关闭了

8刻钟空闲后连续失效的化解,mysql8小时查了一下发觉应用程序和mysql数据库建构连接,假若超过8钟头应用程序不去会见数据库,数据…

mysql每一趟建构三个socket连接(connect)时,这些socket都会攻下一定内部存储器。尽管你关闭(close)连接时,而不是确实的闭馆,而是处于睡眠(sleep)状态。

mysql每一遍建设构造三个socket连接(connect)时,那么些socket都会据有一定内部存款和储蓄器。即便你关闭(close)连接时,并非的确的关闭,而是处于睡眠(sleep)状态。

  1. 增加 MySQL 的 wait_timeout 属性的值。 

当你下一次再开展延续时,就可以高速运维当前居于睡眠情状的socket。可是过多的socket会占据大量的内部存款和储蓄器,为消除这一个主题材料,mysql有个超时机制。

当您下一次再实行连接时,就足以神速运营当前居于睡眠情形的socket。不过过多的socket会占领大量的内部存款和储蓄器,为焚林而猎那一个主题材料,mysql有个超机缘制。

修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: 
# Set a connection to wait 8hours in idle status.  wait_timeout
=86400 

您能够运用这条语句查看当前设置的晚点时长:

你能够选取那条语句查看当前安装的逾期时间长短:

将那2个参数设置为24刻钟(60*60*24=604800)即可。  set
interactive_timeout=604800;  set wait_timeout=604800; 

show global variables like ‘wait_timeout’;

show global variables like ‘wait_timeout’;

但如故并不周到,一旦超过这么些日子不曾连接,如故会报错.为此笔者布署了第二种方案,制止超时,以期终极化解

收获的结果如下:

赢得的结果如下:

2.定期访谈数据库,在逾期之内访问mysql,就能够幸免mysql断开连接

+—————+——-+
| Variable_name | Value |
+—————+——-+
| wait_timeout  | 28800   |
+—————+——-+
1 row in set (0.00 sec)

+—————+——-+
| Variable_name | Value |
+—————+——-+
| wait_timeout  | 28800   |
+—————+——-+
1 row in set (0.00 sec)

 

默认是28800秒,也就是8小时

默认是28800秒,也就是8小时

admin

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注