java - tomcat连接池验证间隔

标签 java tomcat connection-pooling

我在我的应用程序(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/

相关文章:

java - else 语句不会在 if else 语句中执行

单例中类字段和方法的Java顺序

java - httpClient 连接池管理器 validateAfterInactivity

java - 关闭池中的 JDBC 连接

spring-boot - 如何限制运行微服务的spring boot应用创建的数据库连接

tomcat - 我是如何破坏我的 tomcat(webapp 不再加载)?

java - spring中从环境变量指定的路径加载属性文件

java - 两个日期之间的差异?

java - 完全使用 Java 重定向 CMD.exe 进程的输入/输出/错误流

apache - 在 Apache 访问日志中获取工作人员名称