DBCP 1.X MinIdle ,evict及MinEvictableIdleTimeMillis
MinEvictableIdleTimeMillis 代表一个idle 连接的最长时间,超过就会回收,然后在evict后会检查是否满足最小 idle连接数量,不满足就创建新的连接,因此MinEvictableIdleTimeMillis不能设置过小,否则会可能会频繁创建连接。
evict 逻辑
if ((getMinEvictableIdleTimeMillis() > 0) &&(idleTimeMilis > getMinEvictableIdleTimeMillis())) {removeObject = true;} else if ((getSoftMinEvictableIdleTimeMillis() > 0) &&(idleTimeMilis > getSoftMinEvictableIdleTimeMillis()) &&((getNumIdle() + 1)> getMinIdle())) { // +1 accounts for object we are processingremoveObject = true;}
Evict后检查minIdle,注意下面的ensureMinIdle函数
/*** The idle object evictor {@link TimerTask}.* @see GenericObjectPool#setTimeBetweenEvictionRunsMillis*/private class Evictor extends TimerTask {/*** Run pool maintenance. Evict objects qualifying for eviction and then* invoke {@link GenericObjectPool#ensureMinIdle()}.*/@Overridepublic void run() {try {evict();} catch(Exception e) {// ignored} catch(OutOfMemoryError oome) {// Log problem but give evictor thread a chance to continue in// case error is recoverableoome.printStackTrace(System.err);}try {ensureMinIdle();} catch(Exception e) {// ignored}}}
ensureMinIdle最小连接函数
private void ensureMinIdle() throws Exception {// this method isn't synchronized so the// calculateDeficit is done at the beginning// as a loop limit and a second time inside the loop// to stop when another thread already returned the// needed objectsint objectDeficit = calculateDeficit(false);for ( int j = 0 ; j < objectDeficit && calculateDeficit(true) > 0 ; j++ ) {try {addObject();} finally {synchronized (this) {_numInternalProcessing--;}allocate();}}}
DBCP 1.X MinIdle ,evict及MinEvictableIdleTimeMillis相关推荐
- MySQL连接问题: MySQLNonTransientConnectionException:Communications link failure during rollback()
昨天线上出现了这样的一个问题:MySQLNonTransientConnectionException:Communications link failure during rollback() 初步 ...
- Tomcat中配置MySQL数据库连接池
Web开发中与数据库的连接是必不可少的,而数据库连接池技术很好的优化了动态页与数据库的连接,相比单个连接数据库连接池节省了很大的资源.用一个通俗的比喻:如果一个人洗澡需花一桶水,那一百个人就要花一百桶 ...
- java实现这个无表头空表格,《java程序导出excel表格是空白的没有数据?》 java怎么导入数据库...
java程序导出excel表格是空白的没有数据? 看一下是否可以链接上数据库,或者查看一下链接的数据库是否有数据 java从数据库中导出excel poi 建议你使用pageoffice. java ...
- 解读dbcp自动重连那些事---转载
http://agapple.iteye.com/blog/791943 可以后另一篇做对比:http://agapple.iteye.com/blog/772507 同样的内容,不同的描述方式,不一 ...
- Java框架数据库连接池比较(c3p0,dbcp和proxool)
现在常用的开源数据连接池主要有c3p0,dbcp和proxool三种,其中: ¨ hibernate开发组推荐使用c3p0; ¨ spring开发组推荐使用dbcp ( ...
- DBCP数据库连接打满原因分析
实验背景 近一年来发生几起的数据库连接被打满的情况,初步分析是应用使用连接数量"超过了"连接池(DBCP1.4)的上限,导致数据库连接被打满,其中一个结论是连接池的bug导致 问题 ...
- 【超详细】DBCP连接池配置参数说明
<!-- 数据源1 --><bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSo ...
- dbcp、c3p0、proxool、Bonecp等连接池对比
突然想到了有好几种连接池,上网找了下,记录下: DBCPDBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用http://homepa ...
- DBCP|C3P0参数详解
1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.B ...
最新文章
- 模拟系统照相机图片裁剪的功能
- 【转】Spring 4.x实现Restful web service
- adadelta算法_神经网络中常用的优化算法
- C#发现之旅第二讲 C#-XSLT开发
- wine和steam的区别
- OpenSSL 修复可导致 DoS攻击的高危漏洞
- 转~ubuntu的一些常用软件
- armbian编译安装mentohust 认证锐捷客户端
- 程序员工作几年的一些感悟
- 迪文屏幕ttl转232选择
- 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN洪水攻击
- 一、线性回归面试题总结
- UE4/5 EasyFog插件使用
- java 数据类型cher,java期末考试题96534-(20008)
- 相关计算机犯罪的案例,案例6 计算机犯罪案例分析
- 基于Matlab的QPSK系统设计(多径瑞利信道,采用jakes模型以及指数模型)
- Blender中文场景概念原画创作教程
- 绿色和平发布IT企业环保排名
- 2019年大数据发展趋势预测,该学什么编程语言?
- CryENGINE3系列总结教程之UI/HUD(一)制作生命条弹药条Flash部分