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(Database Connection Pool)是Apache的一个开源项目,提供了一个基于Java的数据源连接池实现。在上述问题中,应用程序遇到了由于连接池不合理的锁机制导致的连接耗尽问题,表现为无法从连接池获取新的数据库...
在执行编译程序时,如果虚拟机的内存不足,可能会出现“Virtual Memory Exhausted: Cannot Allocate Memory”的错误提示。这是因为编译程序需要占用大量的内存空间,而虚拟机的内存不足以满足编译程序的需求。 解决...
阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法 阿里dubbo出错提示Thread pool is EXHAUSTED是一个常见的错误提示,通常发生在dubbo服务端线程池资源耗尽的情况下。在本篇文章中,我们将详细介绍该错误...
解决这个问题的一种常见策略是使用Jedis的连接池JedisPool,它提供了更高效和可控的资源管理机制。 JedisPool的工作原理是维护一个Jedis实例的池,当需要与Redis交互时,可以从池中借用一个实例,使用完毕后归还给...
使用spring + atomikos+druid配置的分布式事务demo,两种数据源配置方式都可以,使用junit测试没问题,案例中使用的mysql数据库是8.0.11版本,版本不同请自行修改pom.xml和jdbc.properties
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时,了解其参数的意义至关重要,以确保正确地调整和优化连接池的行为。以下是对JedisPool配置参数的详细解释: 1. **maxActive**: 这个参数定义了连接池中允许的最大活动连接数。如果设置为-1,表示...
6. **异常处理**:库中还包括了一些异常类,如Pool Exhausted Exception,当池中没有可用对象且maxWait已过时会抛出这个异常。 7. **性能优化**:除了基本的池化功能,Apache Commons Pool还提供了一些性能优化策略...
在实际应用中,Apache Commons Pool 2 常被用来创建数据库连接池(如C3P0和HikariCP)、线程池(虽然Java自带的`java.util.concurrent.ExecutorService`也能实现类似功能,但在某些情况下,Apache Commons Pool 2 ...
7. **异常处理**:池库还包含了一些处理和报告异常的机制,比如当池中的对象耗尽时,`GenericObjectPool`会抛出`Pool Exhausted Exception`。 8. **性能优化**:通过合理设置对象池的参数,可以有效地优化内存使用...
主要介绍了Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)错误的解决方法,需要的朋友可以参考下
PHP 中最常见的错误之一是 "Allowed memory size of 134217728 bytes exhausted",這個錯誤是指 PHP腳本在執行過程中,超出了允許的内存限制,導致腳本無法繼續執行。在這篇文章中,我們將詳細解釋這個錯誤的原因、...
Apache Commons Pool 是一个开源的Java对象池库,它提供了一种高效、灵活的方式来管理资源,如数据库连接或线程,通过复用已创建的对象来减少系统开销。这个"commons-pool-1.5.7-src.zip"压缩包包含的是Apache ...
- **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”通常表示程序运行过程中已用尽了分配给它的内存,导致内存溢出。这个错误在处理大数据量、复杂运算或者大型文件时尤其常见。在PHP中,默认的内存限制...
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...
内存泄漏也可能导致问题,确保没有无限递归或无限制增长的数据结构。 6. **使用内存分析工具**: 使用像Xdebug这样的调试工具可以帮助找出内存消耗的源头。通过内存快照和对比,可以发现哪个部分的代码占用了过多...
了解并正确配置这些参数,能有效避免和解决Redis连接问题,保证服务的稳定性和高可用性。对于更复杂的问题,可以参考相关文档和社区资源,如Stack Overflow上的讨论,以便找到适合特定环境的最佳实践。