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相关推荐

  1. MySQL连接问题: MySQLNonTransientConnectionException:Communications link failure during rollback()

    昨天线上出现了这样的一个问题:MySQLNonTransientConnectionException:Communications link failure during rollback() 初步 ...

  2. Tomcat中配置MySQL数据库连接池

    Web开发中与数据库的连接是必不可少的,而数据库连接池技术很好的优化了动态页与数据库的连接,相比单个连接数据库连接池节省了很大的资源.用一个通俗的比喻:如果一个人洗澡需花一桶水,那一百个人就要花一百桶 ...

  3. java实现这个无表头空表格,《java程序导出excel表格是空白的没有数据?》 java怎么导入数据库...

    java程序导出excel表格是空白的没有数据? 看一下是否可以链接上数据库,或者查看一下链接的数据库是否有数据 java从数据库中导出excel poi 建议你使用pageoffice. java ...

  4. 解读dbcp自动重连那些事---转载

    http://agapple.iteye.com/blog/791943 可以后另一篇做对比:http://agapple.iteye.com/blog/772507 同样的内容,不同的描述方式,不一 ...

  5. Java框架数据库连接池比较(c3p0,dbcp和proxool)

    现在常用的开源数据连接池主要有c3p0,dbcp和proxool三种,其中: ¨         hibernate开发组推荐使用c3p0; ¨         spring开发组推荐使用dbcp ( ...

  6. DBCP数据库连接打满原因分析

    实验背景 近一年来发生几起的数据库连接被打满的情况,初步分析是应用使用连接数量"超过了"连接池(DBCP1.4)的上限,导致数据库连接被打满,其中一个结论是连接池的bug导致 问题 ...

  7. 【超详细】DBCP连接池配置参数说明

    <!-- 数据源1 --><bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSo ...

  8. dbcp、c3p0、proxool、Bonecp等连接池对比

    突然想到了有好几种连接池,上网找了下,记录下: DBCPDBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用http://homepa ...

  9. DBCP|C3P0参数详解

    1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.B ...

最新文章

  1. 模拟系统照相机图片裁剪的功能
  2. 【转】Spring 4.x实现Restful web service
  3. adadelta算法_神经网络中常用的优化算法
  4. C#发现之旅第二讲 C#-XSLT开发
  5. wine和steam的区别
  6. OpenSSL 修复可导致 DoS攻击的高危漏洞
  7. 转~ubuntu的一些常用软件
  8. armbian编译安装mentohust 认证锐捷客户端
  9. 程序员工作几年的一些感悟
  10. 迪文屏幕ttl转232选择
  11. 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN洪水攻击
  12. 一、线性回归面试题总结
  13. UE4/5 EasyFog插件使用
  14. java 数据类型cher,java期末考试题96534-(20008)
  15. 相关计算机犯罪的案例,案例6 计算机犯罪案例分析
  16. 基于Matlab的QPSK系统设计(多径瑞利信道,采用jakes模型以及指数模型)
  17. Blender中文场景概念原画创作教程
  18. 绿色和平发布IT企业环保排名
  19. 2019年大数据发展趋势预测,该学什么编程语言?
  20. CryENGINE3系列总结教程之UI/HUD(一)制作生命条弹药条Flash部分

热门文章

  1. 安卓--小猴子摘桃APP实现
  2. [阶段4 企业开发进阶] 2. Redis--实战篇
  3. HTML_Hypertext Marked Language
  4. layui tabl 工具栏按钮双击事件
  5. Function ALV
  6. 全网云cms免费让关键词霸屏百度首页的5招套路
  7. postgresql 的 show create table 命令
  8. 计算机出网关的过程,默认网关是怎么得出来的
  9. 通过禁止用户权限来禁止Win10自动重启更新
  10. 中国古代名句警言 version 1