mysql超机缘制,8钟头空闲后总是失效的缓和

鉴于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小时

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


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

 

 

 

wait_timeout参数的功用:当三个闲置的总是超过8小时后,该连接就能够断开。

wait_timeout参数的效果:当八个闲置的连天超过8小时后,该连接就能够断开。

可是临时需求长日子翻开mysql连接,就必要改造这一个参数的值。依照机器的硬件选择非常的参数值。

而是一时必要长日子翻开mysql连接,就须求改换那些参数的值。依照机器的硬件选取适当的参数值。

有二种办法能够改动这一个参数的值:

有二种方法能够变动那么些参数的值:

1.因来讲语改动那些参数的值。那中艺术不供给重启mysql,但会先断开全数当前连接,然后重新连接。

1.透过言语改变那么些参数的值。那中艺术没有须求重启mysql,但会先断开全部当前延续,然后重新连接。

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

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

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

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)

Query OK, 0 rows affected (1.13 sec)

聊到底一行表示已经济体改动成功。

最后一行表示已经转移成功。

注:那一个措施是局地性质的。当你后一次重新起动mysql服务器时,施行show global variables like 'wait_timeout';时,照旧是修改前的值。

注:那一个主意是一对性质的。当您下次再度启航mysql服务器时,实施show global variables like 'wait_timeout';时,仍旧是修改前的值。

2.透过修改配置文件

2.通过修改配置文件

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

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

增加如下的设置:

加上如下的装置:

[mysqlld]

[mysqlld]

wait_timeout = 100

wait_timeout = 100

interactive_timeout = 100

interactive_timeout = 100

下一场重启mysql服务,改变就能够收效。

下一场重启mysql服务,更换就能生效。

注:那个参数的意义:

注:这几个参数的含义:

wait_timeout:mysql服务器关闭非交互式连接此前等待活动的秒数

wait_timeout:mysql服务器关闭非交互式连接在此之前等待活动的秒数

interactive_timeout:mysql服务器关闭交互式连接在此之前等待活动的秒数

interactive_timeout:mysql服务器关闭交互式连接在此以前等待活动的秒数

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:mysql超机缘制,8钟头空闲后总是失效的缓和

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。