文档章节

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

 张欢19933
发布于 2017/05/07 17:18
字数 379
阅读 61
收藏 0

错误日志

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

The last packet successfully received from the server was 42,630,542 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.

  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

       at java.lang.reflect.Constructor.newInstance(Unknown Source)

     at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)

    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)

       at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3090)

    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979)

    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3520)

      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)

   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)

        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)

 at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4997)

   at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331)

     at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317)

        at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:87)

      ... 89 more

Caused by: java.net.SocketException: Software caused connection abort: recv failed

   at java.net.SocketInputStream.socketRead0(Native Method)

   at java.net.SocketInputStream.read(Unknown Source)

 at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)

  at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161)

   at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)

  at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2537)

     at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2990)

    ... 98 more

错误原因

查看数据库配置:

mysql﹥ show global variables like 'wait_timeout';

+---------------+---------+

| Variable_name | Value |

+---------------+---------+

| wait_timeout | 28800 |             //---->默认空闲连接时间8个小时,超时将关闭该连接

+---------------+---------+

1 row in set (0.00 sec)

MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

解决方法:

1、修改my.cnf: 

wait_timeout=31536000  

interactive_timeout=31536000  

将过期时间修改为1年。 

2、在连接URL上添加参数:&autoReconnect=true&failOverReadOnly=false 

我使用的是第一种方式,如果不会改修改本篇日志说明相应的配置已经起作用。

参考地址:http://www.2cto.com/database/201305/211381.html

3、MySQL5可以考虑用druid连接池或者proxool连接池。

本文转载自:http://blog.sina.com.cn/s/blog_4f925fc30102v611.html

上一篇: mysql导入redis
下一篇: logstash filter插件
粉丝 46
博文 538
码字总数 247200
作品 0
海淀
私信 提问

暂无文章

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部