druid连接池连接hang的问题

jeffreylyp 发布于 2014/09/22 18:18
阅读 631
收藏 0

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

我们这边使用druid-1.0.2作为数据库连接池,碰到一个问题,上周我们的数据库服务器设置了白名单,导致web服务器连接不上,但是连接池一直卡着,没报任何错误,事实上我们配置了maxWait属性为60000,但是好像这个值并没有生效,理论上应该会连接一分钟拿不到应该会报超时的吧?我查看了源码,druid的代码并没有引用maxWait属性,请问这个有解决方案吗?我看了下还可以设置loginTimeout,感觉也可以解决我们的问题。


谢谢

以下是问题补充:

@jeffreylyp:设置了loginTimeout参数,依然不能改善那个问题,如果web服务器的ip不在MySQL的白名单中,超时还是不会报错,还有其他的方式没? (2014/09/23 10:58)
加载中
0
wenshao
wenshao
配置validationQuery了么?以前的版本需要显示配置validationQuery和testOnBorrow。或者你升级到1.0.9试试看
泥瓦匠BYSocket
泥瓦匠BYSocket
用下 大哥的 Druid ~~
0
jeffreylyp
jeffreylyp

@wenshao 谢谢你的回复,不过你的两种方式我都试了,都不行,我jstack之后的堆栈信息片段是这样的:

"main" prio=5 tid=0x00007f8b83001800 nid=0x1903 waiting on condition [0x000000010f14d000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2376)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2306)
- locked <0x00000007eab4a3b8> (a com.mysql.jdbc.JDBC4Connection)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.GeneratedConstructorAccessor26.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:148)
at com.alibaba.druid.filter.FilterAdapter.connection_connect(FilterAdapter.java:785)
at com.alibaba.druid.filter.FilterEventAdapter.connection_connect(FilterEventAdapter.java:38)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1377)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:618)
at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581)

应用的初始化线程会一直hang住,我在想,既然已经配置了testOnBorrow和validationQuery,那么在指定时间内不能建立连接,druid应该直接超时报错才比较合适吧

0
wenshao
wenshao
你应该是配置了maxReconnects吧
0
jeffreylyp
jeffreylyp

@wenshao :

开始木有配置,我Google了下,不配置默认应该是3,但是显式配置了maxReconnects=5,还是老样子,jstack看到的线程堆栈信息还是上边那样子

东方一片海
东方一片海
回复 @Danny_liu : 额,不知道有还有其他参数配置没开放么,一直hang不舒服
jeffreylyp
jeffreylyp
回复 @hibaidu : 木有解决,只有在新增应用服务器,运维配置错误的情况下才会出现,我们也就忍了
东方一片海
东方一片海
已经解决了么?连接不上一直连。。。。
返回顶部
顶部