我在我的应用程序(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秒)稳定。
我使用不同的配置时间和不同的池大小对其进行了测试,所有这些都有一个不稳定期,每次只检查部分连接,并最终在每两次配置时检查所有连接时稳定。
我错过了什么?
谢谢,
尼尔
答案 0 :(得分:1)
来自文档
验证间隔-我们不必每次使用连接时都进行验证,我们可以在借用或返回连接时进行验证,只是不超过我们可以配置的间隔。
我认为验证间隔是两次检查之间的最短时间,并取决于使用连接的频率。