文档章节

MySQL异常【数据库断开连接】:Communications link failure

谢思华
 谢思华
发布于 2015/08/17 12:29
字数 482
阅读 14152
收藏 7

一.异常信息以及解决办法

      
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure 
org.springframework.transaction.CannotCreateTransactionException: 
    Could not open JDBC Connection for transaction; 
    nested exception iscom.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 
    Communications link failure
The last packet successfully received from the server was 6,388 milliseconds ago.  
The last packet sent successfully to the server was 1,504 milliseconds ago.
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:240)

异常分析:程序与MySQL通讯失败了,即连接失败了。

       此为程序打开数据库连接后,等到做数据库操作时,发现连接被MySQL关闭掉了。而在MySQL这一层,MySQL5配置上默认将连接的等待时间(wait_timeout)缺省为8小时。连接超过8小时,会导致mysql认为这个连接超时无效,然后进行关闭。

mysql﹥ 
mysql﹥ show global variables like 'wait_timeout'; 
+---------------+---------+ 
| Variable_name | Value | 
+---------------+---------+ 
| wait_timeout | 28800 | 
+---------------+---------+ 
1 row in set (0.00 sec) 
28800 seconds,也就是8小时。


解决办法(尝试方案顺序可为:(1)(3)(2)):
(1)在jdbc连接url的配置中,你可以附上“autoReconnect=true”,但这仅对mysql5以前的版本起作用。

(2)既然问题是由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 

(3)我们可以将数据库连接池的 validateQuery、testOnBorrow(testOnReturn)打开,这样在 每次从连接池中取出且准备使用之前(或者使用完且在放入连接池之前)先测试下当前使用是否好用,如果不好用,系统就会自动destory掉。
或者testWhileIdle项是设置是否让后台线程定时检查连接池中连接的可用性。


二.根本解决办法:代码优化



类似问题:java.net.SocketException四大异常解决方案


© 著作权归作者所有

共有 人打赏支持
谢思华
粉丝 64
博文 210
码字总数 135083
作品 0
广州
程序员
私信 提问
ActiveMQ:No operations allowed after statement ...

ActiveMQ版本:5.5.1 记录人:@郑昀现象: 系统现象:部分消息发送失败,失败频率不正常。 日志信息:activemq.log 中一直有这样的错误日志: 看上去又是 mq broker 失去了数据库连接,但代码...

旁观者-郑昀
2012/11/10
0
0
druid(version:1.1.9)连接池问题请教

@wenshao 你好,想跟你请教个问题: 我们在生产环境中使用druid,偶尔会报如下异常信息: Communications link failure The last packet successfully received from the server was 2,797,...

may-snow
2018/05/08
588
1
idea hibernate mysql诡异的连接问题

首先mysql的配置没有问题。因为我在IDEA中新建DATA Source然后配置好后是可以连接的,执行建表操作也没有任何问题(idea自带的数据库连接没有任何问题) 然后从持久化窗口中右键项目选择生成持...

cgcgbcbc
2013/12/21
1K
1
Communications link failure,The last packet

Last modified:2013-10-08 14:16:47 ** web网站使用MySQL数据库,今天突然报以下错误: Communications link failure,The last packet successfully received from the server was * milli......

mj4738
2014/03/31
0
1
mysql : Communications link failure 何解?

软件环境:mysql 5.5.25 应用使用数据库连接池 c3p0 经常会发生如下异常: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications......

胡咧咧
2013/05/29
9.7K
4

没有更多内容

加载失败,请刷新页面

加载更多

跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据 应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点...

周立_ITMuch
8分钟前
0
0
Android Studio jni开发入门——看我就够了

一、环境配置 主要需要配置的就是NDK(Native Development Kit),现在Android studio很便利,可以一键下载: file → setting → 按截图找到如下路径 → 选择NDK → 确定应用下载 NDK安装 ...

天王盖地虎626
9分钟前
0
0
day26:shell题

1、 判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。 如果其生产商为AuthenticAMD,就显示其为AMD公司; 如果其生产商为GenuineIntel,就显示其为Intel公司; 否则,...

芬野de博客
19分钟前
0
0
iOS开发之CoreMotion框架的应用

iOS开发之CoreMotion框架的应用 我们知道,现在智能手机手机的功能已经越来越强大。小小的手机中集成了众多的传感器配件。通过这些传感器可以获取到手机甚至用户的状态信息。 在iOS5之前,加...

珲少
22分钟前
0
0
python里能不能用中文

现代计算机和编程的起源和推动力量主要源自美国,再加上26个字母很便于表示(算上大小写,6位bit就够了),因此英语一直是编程领域的不二之选。但这就给部分非英语国家的编程学习者带来一些困...

crossin
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部