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 池中的连接并检测不返回连接池的代码