日期:2014-05-20  浏览次数:20991 次

proxool连oracle长时间没用,会Io 异常: Connection reset oracle
我的ip段是192.168.3.20,数据库的ip是192.168.6.10
有人说因为不同网段,通过网关走,时间久了,网络会断开,才会这样,要怎么解决,下面几个问题有疑惑
1.怎么不让这种情况产生时,重新去连接,我用的是proxool连接池,网上看到有人用Filter,可我用spring,要怎么做
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 -->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 -->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空闲连接数-->
<prototype-count>0</prototype-count>
<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
<maximum-connection-count>30</maximum-connection-count>
<!-- 最小连接数 -->
<minimum-connection-count>0</minimum-connection-count>
我是这样设置的,为什么没操作过了90秒,连接不会销毁掉
2.发生这种状态时,去oracle上看,发现连接都在,只是inactive的,估计是网络的问题
3.如果非要重新连,会导致oracle那边旧的还保持,而每次都要创建一个新的连接,时间久了,连接越来越多,要是有设置连接数,达到一定的连接后,就再也连不上了,这个问题要怎么解决?

------解决方案--------------------
有人说因为不同网段,通过网关走,时间久了,网络会断开,

你的硬件环境有问题啊,朋友,如果硬件上时而会断开的话,那么软件很难避免.
因为你使用了连接池,这就注定了池子里面的连接要保持,你的网络断了,真是没有什么好办法.
另外加大连接数我觉得是没有意义的,网络一断,所有连接全over了.

以我之见,必须解决网络问题,其他方案都是有问题的,如果一个数据库请求还没结束(大查询时间较长,或者巧合),网络断了,神仙也没办法.
------解决方案--------------------
这是PROXOOL由于其实现机制原理的缺陷造成的
如果无法忍受的话,最好将其换成c3p0或者common