tomcat连接池验证间隔

时间:2016-06-17 11:48:47

标签: java tomcat connection-pooling

我在我的应用程序(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秒)稳定。

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

尼尔

1 个答案:

答案 0 :(得分:1)

来自文档

  

验证间隔-我们不必每次使用连接时都进行验证,我们可以在借用或返回连接时进行验证,只是不超过我们可以配置的间隔。

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

相关问题