mysql连接超时,默认8个小时
来源:互联网 发布:三菱fx3u编程手册pdf 编辑:程序博客网 时间:2024/06/11 00:18
使用Hibernate + MYSQL数据库开发,链接超时问题:
com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of ‘wait_timeout’. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property ‘autoReconnect=true’ to avoid this problem.
查了一下,原来是mysql超时设置的问题
如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat.
解决办法:
jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&autoReconnectForPools=true
四。最不好的解决方案
使用Connector/J连接MySQL数据库,程序运行较长时间后就会报以下错误:
Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***
其中错误还会提示你修改wait_timeout或是使用Connector/J的autoReconnect属性避免该错误。
后来查了一些资料,才发现遇到这个问题的人还真不少,大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。这个问题的原因:
MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。
1. 按照错误的提示,可以在JDBC URL中使用autoReconnect属性,实际测试时使用了autoReconnect=true& failOverReadOnly=false,不过并未起作用,使用的是5.1版本,可能真像网上所说的只对4之前的版本有效。
2.没办法,只能修改MySQL的参数了,wait_timeout最大为31536000即1年,在my.cnf中加入:
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
重启生效,需要同时修改这两个参数。
** BEGIN NESTED EXCEPTION **
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.io.EOFException
STACKTRACE:
java.io.EOFException
mysql执行超时设置
mysql> show variables like ‘%timeout’;
mysql> set wait_timeout = 28800000;
mysql> set interactive_timeout = 28800000;
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
windows下在my.ini文中增加:
interactive_timeout=28800000
wait_timeout=28800000
解决MySQL 5数据库连接超时问题
“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure-
Last packet sent to the server was 0 ms ago.
经过一番调研,发现很多人都碰到过类似问题,但网上令人满意的回答并不多。mysql网站上的提问也很多,但并没有正确答案;百度知道上倒是有一个近似正确的回答。现将本人的解决办法总结一下
上述问题是由mysql5数据库的配置引起的。mysql5将其连接的等待时间(wait_timeout)缺省为8小时。在其客户程序中可以这样来查看其值:
mysql﹥
mysql﹥ show global variables like ‘wait_timeout’;
+—————+———+
| Variable_name | Value |
+—————+———+
| wait_timeout | 28800 |
1 row in set (0.00 sec)
28800 seconds,也就是8小时。
如果在wait_timeout秒期间内,数据库连接(java.sql.Connection)一直处于等待状态,mysql5就将该连接关闭。这 时,你的Java应用的连接池仍然合法地持有该连接的引用。当用该连接来进行数据库操作时,就碰到上述错误。这解释了为什么我的程序第二天不能登录的问 题。
你可能会想到在tomcat的数据源配置中有没有办法解决?的确,在jdbc连接url的配置中,你可以附上“autoReconnect=true”,但这仅对mysql5以前的版本起作用。增加“validation query”似乎也无济于事。
本人觉得最简单的办法,就是对症下药:既然问题是由mysql5的全局变量wait_timeout的缺省值太小引起的,我们将其改大就好了。
查 看mysql5的手册,发现对wait_timeout的最大值分别是24天/365天(windows/linux)。以windows为 例,假设我们要将其设为21天,我们只要修改mysql5的配置文件“my.ini”(mysql5 installation dir),增加一行:wait_timeout=18144006
需要重新启动mysql5。
linux系统配置文件:/etc/my.cnf
测试显示问题解决了。
-------------------------------------------
[mysqld]
wait_timeout=2147483interactive_timeout=2147483
- mysql连接超时,默认8个小时
- mysql连接超时,默认8个小时
- spring boot mysql 8小时连接超时
- MySQL笔记-8小时连接闲置超时
- mysql默认8小时超时设置的修改
- mysql 8小时空闲后连接超时的问题
- 解决mysql 8小时空闲后连接超时的问题
- 解析:mysql 8小时空闲后连接超时的问题
- mysql 8小时空闲后连接超时的问题
- MySQL 连接池8小时空闲后超时问题解决
- 解决MySQL 8小时空闲后连接超时的问题
- DBCP连接池防止mysql 8小时超时
- mysql默认8小时连接断开机制解决
- mysql默认连接超时问题的解决方法
- MYSQL 5.0 以上 8小时超时问题
- mysql出现8小时超时问题
- 数据库链接超时(默认8小时)报错:MySQLNonTransientConnectionException
- mysql超时设置的问题,如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat
- Linux平台下基于BitTorrent应用层协议的下载软件开发--策略管理模块(policy.c)
- 筛选法构造素数表
- Oracle 学习笔记9 —— 逻辑控制语句1
- Linux平台下基于BitTorrent应用层协议的下载软件开发--策略管理模块(policy.h)
- LoadRunner 11 安装及破解
- mysql连接超时,默认8个小时
- Linux平台下基于BitTorrent应用层协议的下载软件开发--哈希模块(sha1.c)
- U盘安装Ubuntu——关于UltraISO打开Ubuntu只有EFI文件夹的解决方法
- MTK socket天气预报
- wordpress 百度地图插件安装后,生成百度地图成功,但是在浏览器里面无法打开,直接跑404页面去了
- always@*的含义以及优点
- Linux平台下基于BitTorrent应用层协议的下载软件开发--哈希模块(sha1.h)
- 金山HR写给正在找工作的年轻朋友
- ABC: Always Be Coding——程序员面试必读