Druid在宕库重启后,无法创建新的连接

发布于 2022-09-11 18:45:08 字数 3021 浏览 78 评论 0

我们的项目用的是druid 连接池,我们做宕库测试时,发现了重启后连接池没法创建新的连接,一直报如下错误:
Caused by: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 20, creating 0, createErrorCount 287
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1599) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1326) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5007) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5003) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1304) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1296) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:109) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:203) ~[rpc.register.server-1.4.0-SNAPSHOT.jar:?]
... 19 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.GeneratedConstructorAccessor26.newInstance(Unknown Source) ~[?:?]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_131]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_131]

看了网上说的是版本低,可是我升级到1.1.14版本也有这个问题,试了1.1.2版本也有这个问题,不是偶发,多次测试都会复现,项目的并发也不高。请问什么原因?

我们的连接池配置
maxActive=20
initialSize=3
maxWait=60000
minIdle=3
validationQuery=SELECT 1
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
testWhileIdle=true
testOnBorrow=true
testOnReturn=false
poolPreparedStatements=true
maxOpenPreparedStatements=20

jstack 部分信息:
"Druid-ConnectionPool-Create-1984094095": awaiting notification on [0x000000078c826f50]
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2545)

使用数据库:mysql-5.5.54

目前感觉是druid 的CreateConnectionThread一直没有收到信号量,请帮忙看看是什么原因,非常感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月打碎记忆 2022-09-18 18:45:08

这个问题解决了吗,也碰到这个问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文