【问题标题】:tomcat connection pool validation intervaltomcat 连接池验证间隔
【发布时间】:2016-06-17 11:48:47
【问题描述】:

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

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

尼尔

【问题讨论】:

  • 关闭连接的服务器甚至应该不是问题,因为池还应该检查陈旧的连接。我猜这一切都不会发生,因为您可能将配置放在错误的位置。我会再详细说明一下。

标签: java tomcat connection-pooling


【解决方案1】:

来自文档

验证间隔 - 我们不必在每次使用连接时都进行验证,我们可以在借用或归还连接时执行此操作,但频率不会比我们可以配置的间隔更频繁。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多