mysql 8时辰空闲后总是失效的消逝,mysql8钟头

由于mysql默许8时辰三翻五次无访谈,就能够断开.为此查了须臾间材质,有同种比较轻巧的消除方案:

mysql 8时辰空闲后总是失效的缓慢解决,mysql8钟头

查了须臾间发觉应用程序和mysql数据库创建连接,假若赶上8小时应用程序不去做客数据库,数据库就断掉连接
。这时候再次访谈就能够抛出特别。

关于mysql自动断开的主题素材研究结果如下,

1、在团结的次第中插入按时访问数据库的点子,举例动用提姆er,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)状态。

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

当你下一次再开展接二连三时,就足以飞速运行当前处于睡眠情况的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’;

但依然并不完备,后生可畏旦超过那么些时刻未曾连接,照旧会报错.为此作者安插了第三种方案,幸免超时,以期终极清除

获得的结果如下:

2.按时访谈数据库,在逾期之内访谈mysql,就能够防止mysql断开连接

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

 

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

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


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

 

 

wait_timeout参数的成效:当四个闲置的总是超越8小时后,该连接就能断开。

发表评论

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

CopyRight © 2015-2019 金沙中心城 All Rights Reserved.
网站地图xml地图