db2连接池故障排除记

用java写了个web项目,用了struts和spring。项目中还用了个连接池,数据库是用的db2.一开始时数据源在spring配置文件中是这样配置的:
   <bean id="myDataSource1"
class="org.apache.commons.dbcp.BasicDataSource">
        <property name="url">
<value>jdbc:db2://localhost:50000/test</value>
</property>
<property name="driverClassName">
<value>com.ibm.db2.jcc.DB2Driver</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>test</value>
</property>
</bean>


      一开始用到也没有问题,随着用户并发数增加当超过8个时,无法通过配置的数据源获得db2数据库连接放入池中,导致连接池中连接耗尽,无法获得连接,界面无法登录。于是在网上查了下资料,有很多资料显示db2有数据库连接数限制,其中有这样几个参数:numdb、maxapps、maxagents,这几个参数的详细含义大家可以查查,网上已经有很多介绍我就不多讲了。

       用在db2命令行下界面下敲入:db2 get dbm cfg就可以看以上几个参数的值了。其中numdb的值刚好为8,我心里一阵窃喜,我那边刚好是并发用户超过8个就挂了,难道就是这参数在搞怪。而且它的中文显示这个参数的描述是:并发活动数据库的最大数目。于是去咨询公司的dba,dba毫不留情的否认了我的看法,指出numbdb是指并发活动的数据库的数目。后来自己在本机验证了一下,修改了这个参数,依然没法解决这个故障,证明dba所言非虚。


         看来方向错了,于是我用jdbc获得连接放入池中测试了一下,当并发数量超过8个一点问题没有,看来和数据库限制连接数一点关系。用上面数据源测试时超过8个故障就重现。难道apache数据源有问题,于是换了spring的数据源重新测试了一下,故障消失了,该数据源的获得的最大连接数和参数maxapps有关。问题解决了,不过为啥dbcp的数据源到8就不行了还不知原因,用这个要慎重,要不一不小心就中招了。

你可能感兴趣的:(spring,jdbc,db2,活动,咨询)