我在我的应用程序(java 应用程序)中使用 tomcat 连接池 (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 秒)上稳定下来。
我使用不同的配置时间和不同的池大小对其进行了测试,所有这些都有一个不稳定期,其中每次仅检查部分连接,最终它稳定在每两倍配置时间检查所有连接上。
我错过了什么?
谢谢,
尼尔
最佳答案
来自文档
Validation intervals - we don't have to validate every single time we use the connection, we can do this when we borrow or return the connection, just not more frequent than an interval we can configure.
我假设验证间隔是检查之间的最短时间,并且取决于连接的使用频率。
关于java - tomcat连接池验证间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880827/