`
greenwen
  • 浏览: 220534 次
  • 性别: 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
分享到:
评论

相关推荐

    dbcp 连接池不合理的锁导致连接耗尽解决方案

    DBCP(Database Connection Pool)是Apache的一个开源项目,提供了一个基于Java的数据源连接池实现。在上述问题中,应用程序遇到了由于连接池不合理的锁机制导致的连接耗尽问题,表现为无法从连接池获取新的数据库...

    编译时virtual memory exhausted Cannot allocate memory 内存增加.docx

    在执行编译程序时,如果虚拟机的内存不足,可能会出现“Virtual Memory Exhausted: Cannot Allocate Memory”的错误提示。这是因为编译程序需要占用大量的内存空间,而虚拟机的内存不足以满足编译程序的需求。 解决...

    阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法

    阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法 阿里dubbo出错提示Thread pool is EXHAUSTED是一个常见的错误提示,通常发生在dubbo服务端线程池资源耗尽的情况下。在本篇文章中,我们将详细介绍该错误...

    spring+atomikos+druid分布式事务

    使用spring + atomikos+druid配置的分布式事务demo,两种数据源配置方式都可以,使用junit测试没问题,案例中使用的mysql数据库是8.0.11版本,版本不同请自行修改pom.xml和jdbc.properties

    Jedis出现connection timeout问题解决方法(JedisPool连接池使用实例)

    解决这个问题的一种常见策略是使用Jedis的连接池JedisPool,它提供了更高效和可控的资源管理机制。 JedisPool的工作原理是维护一个Jedis实例的池,当需要与Redis交互时,可以从池中借用一个实例,使用完毕后归还给...

    commons-dbcp-1.4-src&commons-pool-1.5.4-src

    o POOL-152: GenericObjectPool can block forever in borrowObject when the pool is exhausted and a newly created object fails validation. When borrowing an object if a new object is created but ...

    jedisPool配置1

    在配置JedisPool时,了解其参数的意义至关重要,以确保正确地调整和优化连接池的行为。以下是对JedisPool配置参数的详细解释: 1. **maxActive**: 这个参数定义了连接池中允许的最大活动连接数。如果设置为-1,表示...

    commons-pool-1.6

    6. **异常处理**:库中还包括了一些异常类,如Pool Exhausted Exception,当池中没有可用对象且maxWait已过时会抛出这个异常。 7. **性能优化**:除了基本的池化功能,Apache Commons Pool还提供了一些性能优化策略...

    commons-pool2-2.5.0-bin.zip

    在实际应用中,Apache Commons Pool 2 常被用来创建数据库连接池(如C3P0和HikariCP)、线程池(虽然Java自带的`java.util.concurrent.ExecutorService`也能实现类似功能,但在某些情况下,Apache Commons Pool 2 ...

    commons-pool.zip

    7. **异常处理**:池库还包含了一些处理和报告异常的机制,比如当池中的对象耗尽时,`GenericObjectPool`会抛出`Pool Exhausted Exception`。 8. **性能优化**:通过合理设置对象池的参数,可以有效地优化内存使用...

    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)

    主要介绍了Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)错误的解决方法,需要的朋友可以参考下

    php Allowed memory size of 134217728 bytes exhausted

    PHP 中最常见的错误之一是 "Allowed memory size of 134217728 bytes exhausted",這個錯誤是指 PHP腳本在執行過程中,超出了允許的内存限制,導致腳本無法繼續執行。在這篇文章中,我們將詳細解釋這個錯誤的原因、...

    commons-pool-1.5.7-src.zip

    Apache Commons Pool 是一个开源的Java对象池库,它提供了一种高效、灵活的方式来管理资源,如数据库连接或线程,通过复用已创建的对象来减少系统开销。这个"commons-pool-1.5.7-src.zip"压缩包包含的是Apache ...

    usrlocalliblibz.a could not read symbols Bad value问题解决(64 位 Linux)

    - **relocation R_X86_64_32 against `a local symbol' cannot be used when making a shared object:** 这条信息明确指出在构建共享对象(即动态库)时,遇到了针对本地符号的重定位问题,这在默认情况下是不允许的...

    PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法

    PHP错误“Allowed memory size of 67108864 bytes exhausted”通常表示程序运行过程中已用尽了分配给它的内存,导致内存溢出。这个错误在处理大数据量、复杂运算或者大型文件时尤其常见。在PHP中,默认的内存限制...

    ResourceExhaustion:调查Java资源耗尽情况

    cwb@laptop$ (./a.out | tail -1) & (./a.out | tail -1) mmap: Cannot allocate memory mmap: Cannot allocate memory 121126: Allocated map: 65514, 0x7f93dae09000 121128: Allocated map: 65514, 0x7fbce487...

    php解决Allowed memory size of bytes exhausted

    内存泄漏也可能导致问题,确保没有无限递归或无限制增长的数据结构。 6. **使用内存分析工具**: 使用像Xdebug这样的调试工具可以帮助找出内存消耗的源头。通过内存快照和对比,可以发现哪个部分的代码占用了过多...

    Redis连接错误的情况总结分析

    了解并正确配置这些参数,能有效避免和解决Redis连接问题,保证服务的稳定性和高可用性。对于更复杂的问题,可以参考相关文档和社区资源,如Stack Overflow上的讨论,以便找到适合特定环境的最佳实践。

Global site tag (gtag.js) - Google Analytics