这个一段时间在20分钟左右吧,粗略估计
使用的是spring3,struts2,mybatis3.2.2 连得oracle druid1.0.1
一直拿不到数据库连接,前台无响应,过一段时间会报下边的错误,然后才能正常得到连接,执行查询
系统在linux和windows上都有跑 因为是内网,错误只能给个大体的了
windows错误是
close connection error
caused by SQLRecorableException:io错误Connection reset by peer:socket write error
caused by SocketException Connection reset by peer:socket write error
linux是
close connection error
caused by SQLRecorableException:io错误 断开的管道
caused by SocketException 断开的管道
我建立了一个进程,每半分钟会用mybatis查询一下数据库,就不会有问题,但是validationQuery,testWhileIdel,TimeBetweenEvictionRunsMills都设置了,下边给出数据源配置
<property name="driverClassName" value="${jdbc.driver}" />
<!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${jdbc.pool.minIdle}" />
<property name="minIdle" value="${jdbc.pool.minIdle}" />
<property name="maxActive" value="${jdbc.pool.maxActive}" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="30000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x' 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" /> -->
分析:
1.我设置了validationQuery感觉像是没有起作用,因为加入心跳后就正常了,
2.系统断开了一段时间没有活动的连接,这其实跟1差不多,明明设置了validationQuery的
3.oracle断开了无活动连接,但我看了一下是unlimited的,
4.查看本地端口与服务器1521端口的tcp连接,在不操作的时候,tcp连接一直有,在服务端也有,但只要使用,就会全部断开,换成新的,因为本地的端口都改变了,但是服务器上的这个端口还是established
5.在druid的监控平台查看连接数,一直显示正常,但是在用的时候会全部消失,只剩下一条,这一条应该是重新创建的
问题:
1.有办法查看validationQuery有没有起作用吗,在sql监控里边看不到这条语句~
2,oracle的unlinited我是在dba_profile中看的,不确定是在这吗
3.这问题到底是怎么出的额?大牛们,内网导个东西麻烦死,还没有换个数据源试过
我在OSC看过之前很多人遇到过这个问题,按照其他连接池的设置,都没能解决。最后都不了了之。我没用过druid,也不知道解决方案。
我认为这个是druid的bug.
问这个问题的人太多了,应该是本身的Bug0.0我是接的二手的这个项目,难道要我换连接池,倒是也好换,只是问题解决不了感觉很难受~为什么没有回答的呢0.0 这是连接老化问题,好解决,应该有一个连接空闲多久,就断开的参数设置,你找找,dbcp,c3p0都是有的,在您好您的问题解决没有
在您这个问题解决没有
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。