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秒,泄露的链接能够被删除的超时值
tomcat
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条链接呢?
一、等业务压力上来了, DBCP就会建立新的链接。
二、配置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,并进行着新老更替。
jvm