Cannot get a connection, pool exhausted
2015-11-12 13:17
357 查看
tomcat 连接池泄露的问题:Cannot get a connection, pool exhausted
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. 设定连接在多少秒内被认为是放弃的连接,即可进行恢复利用。
c. 输出回收的日志,可以详细打印出异常从而发现是在那里发生了泄漏
附 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
maxActive、maxIdle 建议设置 maxActive="300" maxIdle="50"
maxActive 设置在300-1000之间
maxIdle 设置在 20-100 之间
还有就是在程序的 finally 里面要关闭 Connection
例如: DbHelper.closedAll(rs, ps, conn);
maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive,连接池的最大数据库连接数。设为0表示无限制。
maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
无限制。
*maxActive:最大连接数据库连接数,设 0 为没有限制
*maxIdle:最大等待连接中的数量,设 0 为没有限制
*maxWait:最大等待毫秒数, 单位为 ms, 超过时间会出错误信息
一般把maxActive设置成可能的并发量就行了
maxActive、maxIdle和maxWait参数:
maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连
接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的
连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到
超时为止
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
maxActive、maxIdle 建议设置 maxActive="300" maxIdle="50"
maxActive 设置在300-1000之间
maxIdle 设置在 20-100 之间
还有就是在程序的 finally 里面要关闭 Connection
例如: DbHelper.closedAll(rs, ps, conn);
maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive,连接池的最大数据库连接数。设为0表示无限制。
maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
无限制。
*maxActive:最大连接数据库连接数,设 0 为没有限制
*maxIdle:最大等待连接中的数量,设 0 为没有限制
*maxWait:最大等待毫秒数, 单位为 ms, 超过时间会出错误信息
一般把maxActive设置成可能的并发量就行了
maxActive、maxIdle和maxWait参数:
maxActive是最大激活连接数,这里取值为20,表示同时最多有20个数据库连
接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的
连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到
超时为止
相关文章推荐
- Linux操作系统文件系统基础知识详解
- PEP8——Python代码规范
- Codeforces 591B Rebranding
- 教你如何破解软件
- JS闭包与变量
- 2015-11-12 English
- HBase表描述和修改
- Android UI 线程执行操作的三种方式
- shell 取得上个月的开始结束日期
- java常用工具类 - 全角转半角、半角转全角
- 关于spring 中集成shrio注意点
- 如何在TortoiseGit(pageant)中自动导入ppk文件
- 来一发,网页下拉刷新
- iOS在UITableView全面解析
- CodeBlocks下搭建Opencv——问题之——计算机中丢失 opencv_world300.dll
- 读书随码《php核心技术与最佳实践》面向对象的形与本
- 1.在Linux下如何使用软盘、光盘以及DOS等非Linux分区
- iOS UILabel详解(转载)
- Testing Round #12 (597A,597B,597C)
- kickstart +dhcp +tftpd+apache2 自动安装ubuntu环境搭建