initialSize="10"     

初始化连接,连接池启动时创建的初始化连接数量(默认值为0)

maxActive="80"     
     最大活动连接,连接池中可同时连接的最大的连接数(默认值为8)

minIdle="10"     
     最小空闲连接,连接池中最小的空闲的连接数,低于这个数量会被创建新的连接(默认为0,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置)

maxIdle="60"     
     最大空闲连接,连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负数表示不限制(默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置)

maxWait="3000"     
     从池中取连接的最大等待时间,单位ms.当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限)

validationQuery = "SELECT 1"     

     验证使用的SQL语句

testWhileIdle = "true"     
     指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.

testOnBorrow = "false"     
     借出连接时不要测试,否则很影响性能。一定要配置,因为它的默认值是true。false表示每次从连接池中取出连接时,不需要执行validationQuery = "SELECT 1" 中的SQL进行测试。若配置为true,对性能有非常大的影响,性能会下降7-10倍。

timeBetweenEvictionRunsMillis = "30000"
     每30秒运行一次空闲连接回收器,配置timeBetweenEvictionRunsMillis = "30000"后,每30秒运行一次空闲连接回收器(独立线程)。并每次检查3个连接,如果连接空闲时间超过30分钟就销毁。销毁连接后,连接数量就少了,如果小于minIdle数量,就新建连接,维护数量不少于minIdle,过行了新老更替。

minEvictableIdleTimeMillis = "1800000"
     池中的连接空闲30分钟后被回收

numTestsPerEvictionRun="3"
     在每次空闲连接回收器线程(如果有)运行时检查的连接数量

removeAbandoned="true"
     连接泄漏回收参数,当可用连接数少于3个时才执行

removeAbandonedTimeout="180"
     连接泄漏回收参数,180秒,泄露的连接可以被删除的超时值

注意事项

maxIdle值与maxActive值应配置的接近
     当连接数超过maxIdle值后,刚刚使用完的连接(刚刚空闲下来)会立即被销毁。而不是想要的空闲M秒后再销毁起一个缓冲作用。若maxIdle与maxActive相差较大,在高负载的系统中会导致频繁的创建、销毁连接,连接数在maxIdle与maxActive间快速频繁波动,这不是想要的。高负载系统的maxIdle值可以设置为与maxActive相同或设置为-1(-1表示不限制),让连接数量在minIdle与maxIdle间缓冲慢速波动。

timeBetweenEvictionRunsMillis建议设置值
minIdle要与timeBetweenEvictionRunsMillis配合使用才有用,单独使用minIdle不会起作用。

initialSize="5",会在tomcat一启动时,创建5条连接,效果很理想。但同时我们还配置了minIdle="10",也就是说,最少要保持10条连接,那现在只有5条连接,哪什么时候再创建少的5条连接呢?
     1、等业务压力上来了, DBCP就会创建新的连接。
     2、配置timeBetweenEvictionRunsMillis=“时间”,DBCP会启用独立的工作线程定时检查,补上少的5条连接。销毁多余的连接也是同理。

连接销毁的逻辑

DBCP的连接数会在initialSize - minIdle - maxIdle - maxActive  之间变化。变化的逻辑描述如下:
    默认未配置initialSize(默认值是0)和timeBetweenEvictionRunsMillis参数时,刚启动tomcat时,连接数是0。当应用有一个并发访问数据库时DBCP创建一个连接。目前连接数量还未达到minIdle,但DBCP也不自动创建新连接已使数量达到minIdle数量(没有一个独立的工作线程来检查和创建)。随着应用并发访问数据库的增多,连接数也增多,但都与minIdle值无关,很快minIdle被超越,minIdle值一点用都没有。直到连接的数量达到maxIdle值,这时的连接都是只增不减的。 再继续发展,连接数再增多并超过maxIdle时,使用完的连接(刚刚空闲下来的)会立即关闭,总体连接的数量稳定在maxIdle但不会超过maxIdle。
    但活动连接(在使用中的连接)可能数量上瞬间超过maxIdle,但永远不会超过maxActive。这时如果应用业务压力小了,访问数据库的并发少了,连接数也不会减少(没有一个独立的线程来检查和销毁),将保持在maxIdle的数量。

默认未配置initialSize(默认值是0),但配置了timeBetweenEvictionRunsMillis=“30000”(30秒)参数时,刚启动tomcat时,连接数是0。马上应用有一个并发访问数据库时DBCP创建一个连接。目前连接数量还未达到minIdle,每30秒DBCP的工作线程检查连接数是否少于minIdle数量,若少于就创建新连接直到达到minIdle数量。
    随着应用并发访问数据库的增多,连接数也增多,直到达到maxIdle值。这期间每30秒DBCP的工作线程检查连接是否空闲了30分钟,若是就销毁。但此时是业务的高峰期,是不会有长达30分钟的空闲连接的,工作线程查了也是白查,但它在工作。到这里连接数量一直是呈现增长的趋势。
    当连接数再增多超过maxIdle时,使用完的连接(刚刚空闲下来)会立即关闭,总体连接的数量稳定在maxIdle。停止了增长的趋势。但活动连接(在使用中的连接)可能数量上瞬间超过maxIdle,但永远不会超过maxActive。
     这时如果应用业务压力小了,访问数据库的并发少了,每30秒DBCP的工作线程检查连接(默认每次查3条)是否空闲达到30分钟(这是默认值),若连接空闲达到30分钟,就销毁连接。这时连接数减少了,呈下降趋势,将从maxIdle走向minIdle。当小于minIdle值时,则DBCP创建新连接已使数量稳定在minIdle,并进行着新老更替。

DBCP连接池配置参数详解相关推荐

  1. DBCP连接池常用参数详解

    DBCP连接池配置详解 连接池空闲连接数:连接池中存放的没有被使用的连接,使用getNumIdle()方法获取 连接池活动连接数:已经被程序借出,正在使用的连接数,当调用conn.close()方法后 ...

  2. c3p0连接池配置参数详解

    <c3p0-config>   <default-config>  <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 -->   ...

  3. basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中"获得连接"或"释放资源 ...

  4. dbcp连接池配置参数

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

  5. C3PO连接池配置及其详解

     一.配置 <c3p0-config>        <default-config>        <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. ...

  6. tomcat jdbc连接池配置属性详解之参数说明

    driverClassName 数据库驱动类,针对mysql填com.mysql.jdbc.Driver username 用户名 password 密码 maxActive 最大允许的连接数 max ...

  7. 关于Tomcat与MySQL连接池问题的详解

    转载自   关于Tomcat与MySQL连接池问题的详解 研究了一天,终于有所收获,希望对大家有所帮助.首先请大家注意:这里尤其讨论Tomcat5.5版本中遇到的问题,为什么尤其单对这个版本,我一会儿 ...

  8. elastic-Job配置参数详解

    elastic-Job配置参数详解 1. 注册中心配置 (1) reg:zookeeper命名空间属性说明 属性名 类型 是否必填 缺省值 描述 id String 是   注册中心在Spring容器 ...

  9. Spring Boot笔记—多线程系列(三)—配置参数详解

    前言 前两篇文章,我们已经学会了如何使用spring boot的多线程和自定义线程池.这篇文章,我们要深入了解上一篇文章中线程池的配置具体含义. 准备工作 说明 为了方便观察线程的情况(如执行完毕数量 ...

最新文章

  1. 不同平台上安装python的方式是一样的对还是错_不可以在同一台计算机上安装多个不同的Python版本...
  2. python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!
  3. Java8基础之super关键字
  4. centos 7 Hadoop2.7.4完全分布式搭建(一)
  5. java 使用logback进行日志输出
  6. 华为大数据中心山西_任正非:华为愿与山西一道建立“煤矿人工智能创新实验室”...
  7. 递归和对面对象编程初步
  8. 风吹来_“秃如其来”的年轻人,如何才能让头发“春风吹又生”?
  9. 中小企业数智化转型,这个百万级客户市场差点被遗忘
  10. JavaScript-No.01 JavaScript实现封装、继承、多态
  11. 小论坛 之Linux服务器搭建Apache PHP mysql 环境
  12. 嵌入式Linux移植lvgl,Linux 下使用fb 移植lvgl详细教程
  13. 前端常见面试题-css篇
  14. 微信小程序全套使用指南
  15. ICT通信运营企业的重建之服务升级(二)----ICT技术及产品种类
  16. PPT文件的密码如何破解掉
  17. APQ:联合搜索网络架构、剪枝和量化
  18. cdr宏教程_CDR-VBA宏完整案例详解(上部)
  19. 游戏里面的英雄是怎么做的?
  20. python文档学习

热门文章

  1. 数学,金融,计算机优秀博客
  2. 机器人感知与控制关键技术及其智能制造应用
  3. 企服三会·PPT | 薪太软李昭君: 产融结合新时代,人力金融新生态
  4. 初学go踩坑系列之 unexpected directory layout:报错
  5. 半导体器件-----短沟道效应
  6. matlab 圣诞树,基于matlab编程圣诞树图源码程序
  7. lisp修改天正标高值_表达式计算修改版本,增加计算函数选择按钮[2019年1月23日更新]...
  8. 电梯程序c语言51单片机,单片机4层电梯控制程序
  9. unity制作全息投影
  10. 未来教育计算机二级学生文档,未来教育计算机二级MS-office题库答案(解题步骤).docx...