tomcat连接池验证间隔

Posted

tags:

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

我在我的应用程序(java应用程序)中使用tomcat连接池(tomcat 7)连接到Azure机器上的远程Oracle数据库。我的连接池配置如下:

PoolProperties p = new PoolProperties();
p.setUrl(connString);
p.setUsername(user);
p.setPassword(password);
p.setDriverClassName("oracle.jdbc.OracleDriver");
p.setValidationQuery("SELECT 1 from dual");
p.setValidationInterval(1 * 60000/2);
p.setTimeBetweenEvictionRunsMillis(1 * 60000/2);
p.setTestOnBorrow(true);
p.setTestWhileIdle(true);
p.setMinIdle(10);
p.setInitialSize(10);

但是看一下捕获文件,我发现没有像我预期的那样每30秒检查一次连接。正确检查一个连接,在配置3次(180秒)后检查其他连接。然后再次只检查一些连接,一段时间后它似乎在配置周期的两倍(每60秒)稳定。

我使用不同的配置时间和不同的池大小测试它,都有一个不稳定期,每次只检查部分连接,最终在每两次配置的时间检查所有连接时稳定。我错过了什么? 谢谢,

尼尔

答案

从文档

验证间隔 - 我们不必每次都使用连接验证,我们可以在借用或返回连接时执行此操作,只是不比我们可以配置的间隔更频繁。

我假设验证间隔是检查之间的最短时间,并取决于连接的使用频率。

以上是关于tomcat连接池验证间隔的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat JDBC连接池:testOnBorrow vs testWhileIdle

org.apache.tomcat.jdbc.pool 中的验证查询

如何验证连接池是不是正常工作

如何跟踪/记录 tomcat dbcp 池中的连接并检测不返回连接池的代码

JDBC连接池的testQuery/validationQuery设置

Tomcat数据库连接池配置