解决MySQL 5数据库连接超时问题

何以乀笙箫默

何以乀笙箫默

2016-02-19 16:06

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的解决MySQL 5数据库连接超时问题,过去的都会过去,迎接崭新的开始,释放更美好的自己。

  最近碰到一个mysql5数据库的问题。就是一个标准的servlet/tomcat网络应用,后台使用mysql数据库。问题是待机一晚上后,第二天早上第一次登录总是失败。察看日志发现如下错误:

  “com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  Last packet sent to the server was 0 ms ago.”

  经过一番调研,发现很多人都碰到过类似问题,但网上令人满意的回答并不多。mysql网站上的提问也很多,但并没有正确答案;百度知道上倒是有一个近似正确的回答。现将本人的解决办法总结一下:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  上述问题是由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=1814400

  需要重新启动mysql5。

  linux系统配置文件:/etc/my.cnf

  测试显示问题解决了。

展开更多 50%)
分享

猜你喜欢

解决MySQL 5数据库连接超时问题

编程语言 网络编程
解决MySQL 5数据库连接超时问题

教你轻松应对JSP连接MySQL数据库问题

Web开发
教你轻松应对JSP连接MySQL数据库问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用Perl连接Mysql数据库

编程语言 网络编程
使用Perl连接Mysql数据库

JSP连接mysql数据库攻略

Java JAVA基础
JSP连接mysql数据库攻略

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

解决MySQL数据库中文模糊检索问题

编程语言 网络编程
解决MySQL数据库中文模糊检索问题

MyGeneration连接MySql数据库的解决办法

MySQL mysql数据库
MyGeneration连接MySql数据库的解决办法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

jquery的颜色选择插件实例代码

jquery的颜色选择插件实例代码

如何在WPS文字中给分栏添加页码

如何在WPS文字中给分栏添加页码
下拉加载更多内容 ↓