项目运行一段时间后,cannot open connection
我的一个项目用的框架是spring1.2+hibernate3.1+struts1.2,应用服务器是webshpere,但是没有用websphere的连接池,用的是apache的dbcp。
在测试机上内部运行测试一段时间后,会报cannot open connection 错误,经分析,应该是并发连接数量不够用的缘故,觉得可能是apache的dbcp有问题,明天准备用websphere的连接池更换再试试。
但疑惑的是,我对数据库操作,都是通过spring 的hibernateTemplate来操作的,hibernateTemplate封装了对链接的关闭操作,事务用的是声明式事务,如果事务配置正确,则会在执行完事务后关闭链接;如果事务配置不正确,则会在执行完数据库操作之后关闭链接,更不存在事务问题,怎么会出现链接不够用的情况呢???如果是dbcp的问题,那使用spring+hibernate是否就不能用tomcat做应用服务器呢,因为tomcat的连接池用的就是dbcp啊??
不知道哪位朋友遇到过这种问题并解决了这种问题,因为我在网上找到的都只是有人提出了这个问题,但是没有人能给出个解决方案,希望不吝赐教。
由于是测试机,所以在项目出现cannot open connection 错误,用户几分钟不做任何操作后,又可以重新操作,说明是连接池在达到了maxWait之后收回了connection,用户再操作时能够重新分配到connection,说明cannot open connection 错误的确是链接数量达到了连接池的maxActive所导致。
不知道有哪位朋友可以赐教这个问题,非常感谢<property name="driverClassName">
<value>com.ibm.db2.jcc.DB2Driver</value>
</property>
<property name="url">
<value>*****</value>
</property>
<property name="username">
<value>****</value>
</property>
<property name="password">
<value>****</value>
</property>
<property name="initialSize">
<value>5</value>
</property>
<property name="maxIdle">
<value>2</value>
</property>
<property name="minIdle">
<value>1</value>
</property>
<property name="maxActive">
<value>5</value>
</property>
<property name="removeAbandoned">
<value>true</value>
</property>
<property name="removeAbandonedTimeout">
<value>1800</value>
</property>
<property name="maxWait">
<value>2000</value>
</property>
</bean>
maxWait="10000" <!--最大建立连接等待时间。如果超过此时间将接到异常。这里设置为10000,表示10秒后超时。设为-1表示无限制,直到超时为止。-->
如果最大数据库活跃连接数过大,可想而知,内存占用量是非常惊人的!如果空闲连接数过大,则资源利用率低,连接池长期未释放,可导致连接池结点异常。所以选好maxActive和maxIdle是连接池性能的关键因素,当然这取决于服务器环境。
9 楼 hpq852 2007-05-11 以前用dbcp 出现过类似的问题, 感觉Connection没有释放. 后来用C3P0问题解决 10 楼 抛出异常的爱 2007-05-11 我以前 一项目就是找不到哪里的数据库连接没断开,加了8G内存了事。。。。 11 楼 jameswei 2007-05-12 估计是连接池数量大小的问题吧. 12 楼 xly_971223 2007-05-12 抛出异常的爱 写道我以前 一项目就是找不到哪里的数据库连接没断开,加了8G内存了事。。。。
太有才了 13 楼 julyboxer 2007-05-12 抛出异常的爱 写道我以前 一项目就是找不到哪里的数据库连接没断开,加了8G内存了事。。。。
你这确实是高手了。。。 14 楼 抛出异常的爱 2007-05-13 julyboxer 写道抛出异常的爱 写道我以前 一项目就是找不到哪里的数据库连接没断开,加了8G内存了事。。。。
你这确实是高手了。。。让你两天时间内找到问题后上线。。。。你给我一个好办法?
救火队中的奇怪方法多了去了
PS:还是找到没关连接的代码了
有一新手拷贝别人代码时没拷finally的内容。。。我吐血啊吐血。。。 15 楼 Qieqie 2007-05-13 引用有一新手拷贝别人代码时没拷finally的内容。。。我吐血啊吐血。。。
呵呵 框架好用吧 至少JdbcTemplate还是能够避免问题,看看没有这些模板方法的日子里,世界是多么糟糕阿