TOMCAT连接池验证间隔



我在我的应用程序(Java应用程序)中使用Tomcat Connection池(Tomcat 7)来连接Azure机器上的远程Oracle DB。我的连接池配置如下:

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秒)的两倍上稳定。

我以不同的配置时间和不同的池大小对其进行了测试,所有这些都有一个不稳定的时期,在该期限中,每次仅检查部分连接时,并最终在每两倍的配置时间检查所有连接时都会稳定下来。我想念什么?
谢谢,

nir

来自文档

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

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