mysql 8钟头空闲后延续失效的减轻,mysql8钟头

是因为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时辰应用程序不去拜见数据库,数据…

wait_timeout参数的作用:当三个闲置的连接当先8小时后,该连接就能够断开。

 

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

2.依期访谈数据库,在逾期以内访问mysql,就能够制止mysql断开连接

你能够运用那条语句查看当前安装的超时时间长短:

 

当您后一次再拓宽一连时,就足以长足运行当前居于睡眠处境的socket。不过过多的socket会侵占多量的内部存款和储蓄器,为解决那些标题,mysql有个超机会制。

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

下一场重启mysql服务,校勘就能够立竿见影。

var cnt=0;
var conn=function(){
    connection.query('USE '+ db);     //查询MySQL中数据库
    cnt++;
    console.log("Mysql重连接成功! 次数:"+cnt);
}


//conn;
    setInterval(conn, 60*1000);//循环执行

在mysql的装置目录下,有个mysql.ini文件

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

唯只不时须求长日子翻开mysql连接,就须求改换这么些参数的值。依照机器的硬件接收相当的参数值。

但依然并不完美,大器晚成旦超越这几个时刻未曾连接,依然会报错.为此我设计了第三种方案,幸免超时,以期终极消除

mysql每一回建设构造叁个socket连接(connect)时,那一个socket都会占有一定内部存款和储蓄器。纵然你关闭(close)连接时,并非当真的关门,而是处于睡眠(sleep)状态。

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

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect…
Connection id:    3
Current database: *** NONE ***

发表评论

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

网站地图xml地图