数据库超时空闲失效-dbcp连接池参数优化
来源:互联网 发布:mrtg linux安装 编辑:程序博客网 时间:2024/05/16 00:53
问题描述:
mysql dba在mysql服务端启用了连接在空闲一定时间(10分钟)后,就自动关闭连接(连接失效)的功能,导致java端连接池在空闲一段时间后,连接被自动关闭(自动失效)。为了避免这种情况出现,可以在dbcp上配置空闲的时候检测连接池线程功能。
一些新建的数据库,DBA设置了超时空闲失效时间(即一个连接超过多长时间空闲,该连接将失效),而我们的很多程序使用的是DBCP连接池
默认参数的情况下连接池是不会自动去检测某个连接是否失效的。这样程序如果获到的是已经失效的链接,将会出现报错。
解决原理:
解决原理:
DBCP使用Apache的ObjectPool作为Connection Pool的实现,在构造GenericObjectPool的时候,会生成一个Inner Class Evictor,实现Runnable的接口。如果属性_timeBetweenEvictionRunsMillis > 0,每过_timeBetweenEvictionRunsMillis毫秒后Evictor会调用evict method,检查Object的idle time是否大于属性_minEvictableIdleTimeMillis毫秒(如果_minEvictableIdleTimeMillis设置为<=0则忽略,使用default value 30分钟),如果是则销毁该Object
参数说明
参数说明
timeBetweenEvictionRunsMillis (设置的Evict线程的时间,单位:毫秒,即每隔多少时间去检测一次空闲连接是否超时,默认值为-1,即不开启)
minEvictableIdleTimeMillis (空闲逐出连接池的时间,单位:毫秒,默认30分钟)
numTestsPerEvictionRun (设定在进行后台对象清理时,每次检查几个链接。默认值是3.
如果numTestsPerEvictionRun>=0, 则取numTestsPerEvictionRun 和池内的链接数 的较小值 作为每次检测的链接数
如果numTestsPerEvictionRun<0,则每次检查的链接数是检查时池内链接的总数乘以这个值的负倒数再向上取整的结果。)
举例:
XX系统的数据库Mysql,dba设置的超时空闲失效时间是600秒(MYSQL如果不设置,默认的是8小时),未加以下参数之前经常报链接失效的错误,加上以下配置后,暂时未发现有错。timeBetweenEvictionRunsMillis="290000"minEvictableIdleTimeMillis="290000" numTestsPerEvictionRun="20"
注:timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis的总和应小于 数据库设置的 超时空闲失效时间。
举例:
XX系统的数据库Mysql,dba设置的超时空闲失效时间是600秒(MYSQL如果不设置,默认的是8小时),未加以下参数之前经常报链接失效的错误,加上以下配置后,暂时未发现有错。timeBetweenEvictionRunsMillis="290000"minEvictableIdleTimeMillis="290000" numTestsPerEvictionRun="20"
注:timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis的总和应小于 数据库设置的 超时空闲失效时间。
- 数据库超时空闲失效-dbcp连接池参数优化
- 数据库超时空闲失效-dbcp连接池参数优化
- 数据库空闲连接超过最大wai_timemout时间,数据库会强行断开空闲的链接,dbcp解决方案
- DBCP 连接池参数
- DBCP连接池参数
- 数据库--数据库链接池--DBCP连接池配置参数说明
- 数据库会自动清除掉超时的空闲连接造成中间件连接池中连接断开的问题
- DBCP连接池连接数据库
- 配置连接池中空闲连接过期超时释放
- DBCP连接池配置参数
- DBCP连接池参数解释
- JDBC连接池连接超时失效问题
- MySQL 连接池8小时空闲后超时问题解决
- DBCP数据池连接数据库
- 让你的DBCP连接池连接不超时
- 数据库--数据库链接池--DBCP--Spring 连接池之 DBCP
- 使用dbcp连接池连接数据库
- DBCP连接池防止mysql 8小时超时
- Linux下安装Oracle数据库时,提示内核参数检查失败解决方法
- A Sieve Method for Prime Numbers
- NOT EXISTS替代NOT IN 和 EXISTS替换DISTINCT 识别‘低效执行’的SQL语句
- Activex控件不能例示 ActiveX 控件“Microsoft Chart Control 6.0(sp4)(OLEDB)"不能例示的解决办法
- uva - 11991 - Easy Problem from Rujia Liu?
- 数据库超时空闲失效-dbcp连接池参数优化
- (译)Object-C中的内存管理
- (译)怎样在xcode里面使用Memory Leaks和Instruments教程
- 模板特化和偏特化 .
- (译)在Objective-c里面使用property教程
- android静态图片和动态壁纸
- NSUserDefaults的使用(类似android的shareprefrence)
- 树莓派(raspberry pi)学习10: 安装ftp服务器
- (译)iOS Code Signing: 解惑