`
greenwen
  • 浏览: 216729 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

tomcat 连接池泄露的问题:Cannot get a connection, pool exhausted

    博客分类:
  • java
阅读更多
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>



附 spring配置 BasicDataSource的相关参数解释
1 初始化连接
   initialSize=10

2  最大空闲连接
   maxIdle=20

3 最小空闲连接
   minIdle=5

4 最大连接数量
maxActive=50

5 是否在自动回收超时连接的时候打印连接的超时错误
logAbandoned=true

6 是否自动回收超时连接
removeAbandoned=true

7 超时时间(以秒数为单位)
removeAbandonedTimeout=180

8 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒
    maxWait=1000
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics