酒醒无梦

我在幻象的迷留界徘徊,谁来指引幻象的轮回?

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  8 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
1 问题描述
Web程序在tomcat刚开始运行时速度很快,但过一段时间后发现速度变得很慢。
检查日志输出,发现异常如下:
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted, cause:
java.util.NoSuchElementException: Timeout waiting for idle object

2 问题解决
tomcat 的数据源定义提供了三个参数:
a. 如果设为true则tomcat自动检查恢复重新利用,没有正常关闭的Connection.(默认是false)
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
b. 设定连接在多少秒内被认为是放弃的连接,即可进行恢复利用。
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
c. 输出回收的日志,可以详细打印出异常从而发现是在那里发生了泄漏
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>

关于回收日志,大致上是以 dbcp object by the following code was never closed 形式开头。
此外 扩大maxActive的值,也有一定帮助。
配置好连接池的参数,问题解决。还需要注意的是,代码中关于数据库查询部分的写法。

posted on 2010-05-25 13:26 Rock N' Java 阅读(217) 评论(0)  编辑  收藏 所属分类: Programming

只有注册用户登录后才能发表评论。


网站导航: