放弃timeout后,Tomcat不会清除已放弃的连接

时间:2016-12-25 07:45:51

标签: java tomcat7 connection-pooling

我在tomcat 7中运行了一个应用程序。该应用程序使用tomcat连接池连接到Oracle。某些连接未在应用程序中手动关闭。因此,这些连接不会返回到连接池。以下属性在context.xml中设置

maxWait="5000"
maxIdle="15"
maxActive="90"
removeAbandoned=true
removeAbandonedTimeout=60
logAbandoned=true

这应该意味着开放的连接应该有资格在60秒后被删除。因此,当清理器线程运行时,它应清除这些连接。我没有设置timeBetweenEvictionRunsMillis。因此,默认值(5秒)应该用作驱逐的间隔。 但令人惊讶的是,这些开放式连接并不是每5秒清洁一次。

问题1
清洁大约需要4-5个小时。在高负荷期间约20分钟。如果更干净的线程每5秒运行一次,那么为什么Tomcat不会每隔5秒清理一次废弃的连接?

问题2
下面给出了删除废弃连接时catalina.out中打印的日志。

"org.apache.tomcat.dbcp.dbcp.AbandonedTrace$AbandonedObjectException: DBCP object created 2014-08-13 04:10:11 by the following code was never closed:"

如图所示,有大量此类日志与对象创建时间相同。但我很确定在此期间没有创建连接对象,因为当时没有人访问该应用程序。这次是否表示其他事情?

0 个答案:

没有答案