druid 在使用一段时间后无法打开连接

yangtengjiao21 发布于 2014/12/05 11:12
阅读 5K+
收藏 1

@wenshao 你好,想跟你请教个问题:

    系统用的是SpringMVC+myBatis + mysql,druid版本:1.0.5,在测试环境下,使用几天后,就出现如下错误,具体多长时间会发生此错误无规律,连接数绝对够用,麻烦帮忙看看是什么问题。

Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60007, active 0
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)


root cause


org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 



jdbc连接配置如下:

<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="20" />


<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />

<property name="timeBetweenEvictionRunsMillis" value="60000" />

<property name="minEvictableIdleTimeMillis" value="300000" />


<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />


<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />


<property name="filters" value="config,stat,log4j" />

加载中
0
红薯
红薯

这种情况一般跟 druid 没关系,数据库没响应,没释放连接都会导致问题的出现

车开源
车开源
我也遇到这个问题,如果与druid没关系的话,在更换为c3p0之后就没这个问题了。
y
yangtengjiao21
回复 @红薯 : 没听说过,用spring还自己手动去关闭数据库连接
红薯
红薯
回复 @yangtengjiao21 : 你不能指望 druid 自动关闭,你程序必须手工关闭
y
yangtengjiao21
@红薯 druid会自己关闭空闲连接的啊,也没有手动打开jdbc连接
红薯
红薯
回复 @yangtengjiao21 : 不是连接不够,是很多人写应用会导致连接泄漏,没关闭之类的
下一页
0
朱宏青
朱宏青
你换成dbcp再测试下看看有没有问题
0
车开源
车开源

我使用Druid也有这个问题,启动应用后使用的得好好的,白天测试跑得起劲啥子错都没,收工第二天再打开就死掉了,查日志就是数据连丢失之类的,后来改用c3p0就没这个问题,不管间隔多久都正常。

之前对Druid的热爱一下子就冷下来了。通过它的SQL语句监控真让我找到有问题的语句,可以更有针对性的优化,但是无故死掉让人不爽。

wenshao
wenshao
配置了testWhileIdle了没?在阿里没发现这样的问题,我猜应是配置的问题
0
南湖船老大
南湖船老大

很多人,非常多人反馈过druid的连接回收和8小时问题,红薯说是要手动管理druid的连接。

我也没用过druid,我用的是tomcat 7的jdbc pool,目前感觉还不错

0
梦想沙漏
梦想沙漏
请百度 mysql 8小时
0
battyman
battyman
我系统上线两个月了,都1000多个session,也没见过druid爆掉啊。有些问题确实是由程序员代码不规范导致的,要仔细排查
0
JerryLin
JerryLin

试试修改jdbc配置,我用druid暂时没有出现8小时问题

jdbc.url=jdbc:mysql://localhost:3306/xxx?autoReconnect=true&autoReconnectForPools=true

0
蝶衣人生
蝶衣人生

你用的mysql是不是5.0 5.1之类的版本啊.如果是还是升级到5.6以上的吧,这些版本都有8小时问题,而且就算使用了c3p0也不行.

y
yangtengjiao21
用的mysql5.6
0
wenshao
wenshao
配置了testWhileIdle应该能解决问题
y
yangtengjiao21
有配置这个<property name="testWhileIdle" value="true" />
返回顶部
顶部