8钟头空闲后连连失效的解决,mysql超机会制

是因为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)状态。

  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钟头后,该连接就可以断开。

但是临时要求长日子翻开mysql连接,就供给转移那一个参数的值。依据机器的硬件接纳合适的参数值。

有三种艺术能够改正这一个参数的值:

1.透过言语退换那几个参数的值。那中艺术无需重启mysql,但会先断开全体当前接二连三,然后再一次连接。

语句:set global wait_timeout = 100;推行结果:

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

Query OK, 0 rows affected (1.13 sec)

提起底大器晚成行表示已经转移成功。

注:那一个措施是局地性质的。当你后一次重新起动mysql服务器时,实行show global
variables like ‘wait_timeout’;时,仍然为修正前的值。

2.通过修改配置文件

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

充足如下的安装:

[mysqlld]

wait_timeout = 100

interactive_timeout = 100

然后重启mysql服务,更改就能够生效。

注:这几个参数的意义:

wait_timeout:mysql服务器关闭非人机联作式连接早前等待活动的秒数

interactive_timeout:mysql服务器关闭人机联作式连接此前等待活动的秒数

发表评论

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