大奖888服务器就能够断开等待超时的连接,mysq

2019-09-18 03:05栏目:网络数据
TAG:

是因为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服务器关闭交互式连接此前等待活动的秒数

版权声明:本文由大奖888-www.88pt88.com-大奖888官网登录发布于网络数据,转载请注明出处:大奖888服务器就能够断开等待超时的连接,mysq