读书人

weblogic异常:Pool JDBC Data Source

发布时间: 2012-11-06 14:07:00 作者: rapoo

weblogic错误:Pool JDBC Data Source-0 is disabled解决

?
2:weblogic启动后,我们可以看到current capacity为15,此时connection pool刚被初始化,weblogic会根据initial capacity去创建相应数量的连接。此时如果我们关闭数据库,然后通过测试程序去获取连接,你会看到我们无法拿到连接(注意我们要选上TestOnReserve),重复三次,再次去监控connection pool。因为三次test失败后,connection pool会被disable(状态为suspend),如下:

weblogic异常:Pool JDBC Data Source-0 is disabled解决?

weblogic异常:Pool JDBC Data Source-0 is disabled解决?
3:重启database。由于weblogic内部实现了connection pool的自检功能,对于disabled的connection pool,weblogic每隔5秒钟去做一次连接尝试,如果连接创建成功,新建连接会被放入连接池,同时resume连接池。通过监控我们可以看到,连接池状态变成running,同时current capacity变成1,

weblogic异常:Pool JDBC Data Source-0 is disabled解决?

weblogic异常:Pool JDBC Data Source-0 is disabled解决?

4:启动多线程测试程序,模拟2个用户并发。第一个用户可以从connection pool中成功拿到连接,而第二个用户因为连接池的current capacity为1,无法直接从pool中拿到连接,这是连接池需要做扩展,而扩展的个数就是我们设定的capacity increment(20)。再来监控connection pool,我们就会看到连接池的current capacity为21,如下:

weblogic异常:Pool JDBC Data Source-0 is disabled解决?

??????? 那么我们能不能通过参数配置不让connection pool不作disable呢? 我们前面所提到的两个参数:CountOfTestFailuresTillFlush、CountOfRefreshFailuresTillDisable,可以实现这样的要求:

  1. <internal-properties>??
  2. ??????????<property>??
  3. ???????????<name>CountOfTestFailuresTillFlush</name>??
  4. ????????????<value>10</value>??
  5. ???????????</property>??
  6. ??????????<property>??
  7. ?????????????<name>CountOfRefreshFailuresTillDisable</name>??
  8. ????????????<value>20</value>??
  9. ???????????</property>??
  10. </internal-properties>??

internal-properties用于定义一些weblogic internal的参数,这些参数无法在console上做配置。除了上面的这两个参数,我们还可以通过internal-properties配置如下几个参数:
??? TestConnectionsOnCreate
??? TestConnectionsOnRelease
??? HighestNumUnavailable
??? SecurityCacheTimeoutSeconds

???????? 通过上述分析,我们可以看到这个问题不是weblogic的bug,而是因为网络问题导致connection pool被disable,要彻底解决这个问题,可以通过网络分析工具查出网络问题,进而解决我们看到的这种现象。

读书人网 >其他数据库

热点推荐