DBCP连接池配置详解
连接池空闲连接数:连接池中存放的没有被使用的连接,使用getNumIdle()方法获取
连接池活动连接数:已经被程序借出,正在使用的连接数,当调用conn.close()方法后会归还给连接池,使用getNumActive()方法获取,如果程序一直没有调用conn.close()方法,该连接不会被释放,会一直占用活动连接数
空闲连接回收器:参数timeBetweenEvictionRunsMillis配置后,连接池会开启独立线程,每隔timeBetweenEvictionRunsMillis(毫秒)检查numTestsPerEvictionRun个连接(只会检查空闲连接),如果连接空闲了minEvictableIdleTimeMillis(毫秒),就会移出连接池(销毁),如果发现销毁之后空闲连接数小于minIdle,就会重新创建补充空闲连接数到minIdle个,testWhileIdle =true时,回收器会去执行validationQuery ,检测该连接是否有效(超时、数据库已关闭连接等),检测失败就直接移出连接池(销毁)
参数 | 默认值 | 说明 |
url |
| 数据库地址 |
driverClassName |
| 数据库驱动类名 |
username |
| 数据库用户名 |
password |
| 数据库密码 |
initialSize | 0 | 连接池初始化时生成的连接数 |
minIdle | 0 | 连接池中保持的最小空闲连接数, |
maxIdle | 8 | 连接池中保持的最大空闲连接数,超过的空闲连接将被释放 |
maxActive | 8 | 连接池中支持的最大活动连接数 |
maxWait | -1 | 当连接池中没有空闲连接时,最大的等待时间(毫秒) |
validationQuery |
| 检查连接是否可以的验证语句 |
testOnBorrow | true | 借出连接时是否校验,默认校验,建议设置为false |
testOnReturn | false | 归还连接时是否校验,默认不校验 |
testWhileIdle | false | 空闲连接回收器是否校验空闲连接,默认不校验,建议设置为true,可以避免mysql数据库超时问题 |
timeBetweenEvictionRunsMillis | -1 | 空闲连接回收器运行周期(毫秒),默认不运行 |
numTestsPerEvictionRun | 3 | 空闲连接回收器每次检测空闲连接数 |
minEvictableIdleTimeMillis | 1000*60*30 | 空闲连接回收器移除空闲连接的最小空闲连接,如果连接空闲了minEvictableIdleTimeMillis(毫秒)就移除 |
removeAbandoned | false | 连接泄漏回收参数,当可用连接数少于3个时才执行,(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发 |
removeAbandonedTimeout | 300 | 活动连接多久没被使用即视为Abandoned,即连接泄漏(秒) |
logAbandoned | false | 回收事件后,是否在log中打印出回收Connection的错误信息,默认不打印 |