【发布时间】: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