目录
第6篇中,分析了如何获取连接,那获取连接后,Druid 是如何管理这些连接的呢?
可以先给结论,是通过几个关键参数来控制的
testOnBorrow
testOnReturn
testWhileIdle
testOnBorrow
首先看 testOnBorrow,从字面理解,是从连接池中获取连接时,要测试连接是否可用。下面是代码中使用这个属性的几处地方:

1179 和 1193 行,是在 validationQueryCheck() 方法中使用的,这个方法是判断是否正确设置了验证连接可用性相关的参数,即如下参数:
testOnBorrow
testOnReturn
testWhileIdle
validConnectionChecker
validationQuery
高亮的 1452 行是个关键,在 DruidDataSource#getConnectionDirect(long maxWaitMillis) 方法中:
if (testOnBorrow) {
boolean validate = testConnectionInternal(poolableConnection.holder, poolableConnection.conn);
if (!validate) {
if (LOG.isDebugEnabled()) {
LOG.debug("skip not validate connection.");
}
discardConnect

博客围绕Druid如何管理连接展开,介绍了通过testOnBorrow、testWhileIdle、testOnReturn几个关键参数控制。testOnBorrow在获取连接时测试,testWhileIdle用空闲时间验证,testOnReturn在归还连接时测试。最终建议关闭testOnBorrow和testOnReturn,打开testWhileIdle。
最低0.47元/天 解锁文章
5514

被折叠的 条评论
为什么被折叠?



