经常报错:Communications link failure The last packet successfully received from the server was 0 milliseconds ago

vins 发布于 2016/08/29 12:03
阅读 8K+
收藏 0

@wenshao 你好,想跟你请教个问题:我正在使用druid-1.0.11.jar。经常报错:Communications link failure The last packet successfully received from the server was 0 milliseconds ago

请问我该如何配置,目前我的配置如下:

<!-- 数据源配置, 使用 Druid 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 
   <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
   <property name="driverClassName" value="com.mysql.jdbc.Driver" />
   
<!-- 基本属性 url、user、password -->
<property name="url" value="jdbc:mysql://localhost:3306/hs3?createDatabaseIfNotExist=true&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />

<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="100" />
<property name="minIdle" value="100" /> 
<property name="maxActive" value="2000" />

<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />
<!-- 配置maxWait后 会使用公平锁,并发性能降下,可配置useUnfairLock=true,是否非公平锁 -->
<!-- <property name="useUnfairLock" value="true"/> -->

<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />

<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="validationQuery" value="SELECT 1 FROM DUAL" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />

<!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> -->

<!-- 配置监控统计拦截的filters -->
   <property name="filters" value="stat" />
</bean>

加载中
0
v
vins
mysql 服务器配置wait_timeout=28800
0
wenshao
wenshao

配置testWhileIdle=true,并且升级到最新版本就好了

https://github.com/alibaba/druid/releases/tag/1.0.25

王wg
王wg
我也更新了,也不行
AfterDt
AfterDt
按照你说的做了,还是不可以,已经升级到1.0.25版本了,也已经配置配置testWhileIdle=true,数据库wait_timeout=100
0
v
vins

引用来自“wenshao”的评论

配置testWhileIdle=true,并且升级到最新版本就好了

https://github.com/alibaba/druid/releases/tag/1.0.25

testWhileIdle=true已经配置,
最新版本1.0.25.我进入网站后发现一些不是很理解的问题,能否帮忙解决下我的疑问?
在发布的描述中讲到
1、修复SQL注释解析错误的BUG #1359
2、表名支持order关键字 #1362
3、ODPS SQL格式化后特别字符输出不对 #1375
4、MySQL解析set xxx=on语法出错 #1367
5、修复SQL注入存在commons-lang依赖的问题 #1364


以上更新日志都提到SQL语法的一些问题修复?我在想druid对SQL单独有处理吗?按我理解SQL是否支持应该是JDBC做的事情,连接池为何管理SQL语法呢?我的理解有问题还是确实druid处理了SQL语法,如果处理语法那么JDBC支持的SQL语句在Druid下可能有不支持的情况吗?
0
月色无痕

问题解决了吗?我也遇到 求解决

0
王wg
王wg

@wenshao 问题解决了吗,1.0.29也会出这个问题。

0
wenshao
wenshao

<property name="validationQuery" value="SELECT 1 FROM DUAL" /> 这个配置独对。另外缺省mysql连接会最大存活7个小时,你在服务端做了什么额外操作么?

0
Sky__
Sky__

在数据源端url配置这个:jdbc:mysql://loca host:3306/test?autoReconnect=true

然后在数据源属性里面:<property name="testOnBorrow" value="true" />  

0
k
kev_tian

com.alibaba.druid.pool.DruidDataSourcehandleConnectionExceptiondiscard connection
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

@wenshao   同求问题解决方案

0
wenshao
wenshao

时间没有超时啊,断开很奇怪

0
蜗牛IT

有解决吗,碰到同样的问题。

刘王林123
@蜗牛IT 回复@蜗牛IT : 谢谢,你的回答
蜗牛IT
回复 @刘王林123 : 这个问题最后不了了之
刘王林123
解决了吗?碰到同样的问题
返回顶部
顶部