DBCP连接池配置参数

Posted yanze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DBCP连接池配置参数相关的知识,希望对你有一定的参考价值。

本文参考自:https://blog.csdn.net/zys_1997/article/details/78107783

首先,明确连接、活动连接(连接正被使用)、空闲连接的概念

创建连接

1、初始化 2、空闲连接低于最小空闲minIdle

销毁连接

1、空闲连接数目高于最大空闲 2、活动连接被遗弃

回收行为

1、空闲连接回收器(定时执行)2、连接回收器(maxwait后触发)

 

--------------------------

initialSize 初始化连接数,即连接池启动时池子中的连接数目

maxActive 最大活动连接数,即连接池中可同时连接的最大数目

minIdle 最小空闲连接,连接池中最少的空闲的连接数,

低于这个数量时,意味着连接不够用了,会被创建新的连接

默认为0,该参数越接近maxIdle,性能越好因为连接的创建和销毁,都是需要消耗资源的

不宜太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置。

 

maxIdle 最大空闲连接

超过此参数时空闲连接将被释放,如果设置为负数表示不限制

默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置

 

maxWait 请求连接时,最长的等待时间。

单位ms,当没有可用连接时,连接池会等待连接释放,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限)

 

validationQuery 验证操作时使用得SQL语句

 

testWhileIdle 连接空闲时是否被空闲连接回收器(如果有)验证

如果验证失败,将直接回收

 

testOnBorrow 连接被借走(取出使用)时需不需要验证

默认值是true,即每次从连接池中取出连接时,都需要执行validationQuery中的SQL进行测试,这会导致性能下降7-10倍。

一般设为false,不要测试

 

--------------------

以下三者配合使用:

 

minEvictableIdleTimeMillis 连接空闲了多久会被空闲连接回收器回收

 

 

numTestsPerEvictionRun 空闲连接回收器每次检查多少个连接

 

timeBetweenEvictionRunsMills 空闲连接回收器运行周期

每timeBetweenEvictionRunsMills运行一次空闲连接回收器(独立线程)。

每次检查numTestsPerEvictionRun个连接,如果连接空闲时间超过minEvictableIdleTimeMillis就先销毁,之后如果小于minIdle数量,就新建连接,维护数量不少于minIdle,过行了新老更替。

--------------------

以下三者配合使用:

removeAbandonedTimeout 连接多久没被使用即视为Abandoned,即连接泄漏

 

removeAbandoned 当active连接快到maxActive连接的时候,是否回收无效的连接回收

备注:maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。

 

logAbandoned 回收事件后,是否在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。 
   

 

以上是关于DBCP连接池配置参数的主要内容,如果未能解决你的问题,请参考以下文章

DBCP连接池配置参数说明

DBCP2配置详细说明(中文翻译)

Tomcat 7 - 忽略数据库连接池参数 (DBCP)

数据库连接池优化配置(druid,dbcp,c3p0)

DRUID连接池配置详解——参数介绍

ssh+连接池配置出现的问题