长时间不访问后druid连接池中的连接失效导致客户端连接失败
@wenshao 你好,想跟你请教个问题:
druid 1.0,spring3+hibernate4
druid配置:
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${druid.driver-url}" /> <property name="username" value="${druid.user}" /> <property name="password" value="${druid.password}" /> <property name="initialSize" value="10" /> <property name="minIdle" value="5" /> <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 1 from dual" /> <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="connectionProperties" value="config.decrypt=true" /> <property name="filters" value="config" /> <property name="proxyFilters"> <list> <ref bean="wall-filter"/> </list> </property> </bean>
14:11:57,021 DEBUG DruidDataSource:931 - skip not validate connection.
14:12:15,929 DEBUG DruidDataSource:931 - skip not validate connection.
14:12:34,834 DEBUG DruidDataSource:931 - skip not validate connection.
后客户端提示网络或者连接异常(C/S)
按照配置druid会不会检测连接的有效性的?需要怎么配置才能保证连接池的连接是有效的呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我也遇到这个问题了,但是我们的数据库没有过防火墙。这个怎么解决
注意有可能是你们网络的问题,比较防火墙策略,导致长时间不活动的连接被防火墙切断了。 这方面你可以看看TCP/IP协议的三握四挥。 其实就是这个原因导致长时间空闲连接慢。
当你配置了testOnWhile=true, JDBC厂商的实现pingDataBase会执行SELECT 'X'这种类似的语句。 当你长时间不连接时,直接用现有池中的连接向数据库服务器发送这条指令时, 数据库服务器收到后会认为这是一个新的连接握手请求(因为之前的连接因为网络问题或策略被断了),直接返回握手ack+sync, 而你的客户端还一直在傻傻等着全部数据返回,一直到超时(20秒),然后这个异常被pingDataBase方法的捕获了,所以你看不到异常,只认为连接失效了,这就导致你看不到真正的问题。 想看异常,把testWhileIdle=false即可。你会看到堆栈中有一堆 connection abort 这种错误
配置上检测的语句 如 oracle select 1 from dual
楼主,后来有结果吗?
是
我用0.2.26时,隔10多分钟不访问就会出现这个:connection abort: socket write error。求解