服务器因 [Pool-Cleaner]:Tomcat 连接池而停止响应,但未能停止它。这很可能造成内存泄漏

Posted

技术标签:

【中文标题】服务器因 [Pool-Cleaner]:Tomcat 连接池而停止响应,但未能停止它。这很可能造成内存泄漏【英文标题】:Server Stop responding because of [Pool-Cleaner]:Tomcat Connection Pool but has failed to stop it. This is very likely to create a memory leak 【发布时间】:2016-06-09 09:15:49 【问题描述】:

问题:

org.apache.catalina.loader.WebappClassLoader - Web 应用程序 [/...] 似乎已经启动了一个名为 [[Pool-Cleaner]:Tomcat Connection Pool[...] 的线程,但未能阻止它。这很可能会造成内存泄漏。

我很少有应用程序部署在带有 jdk1.6.0_45 的 tomcat 服务器(tomcat-7.0.23)中,而我在 apache 网络服务器上注册的服务器。启动服务器后,它工作正常,直到我突然分别为所有应用程序分别收到上述错误,然后我的 tomcat 为所有请求提供 404,但 tomcat 进程仍在运行,并且在浏览器中显示“未找到文件” .

我们使用 Tomcat 连接池,配置如下:

<Resource 
name="Project1" 
auth="Container" 
type="javax.sql.DataSource" 
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
url="DatabaseName" 
username="_username" 
password="_Password" 
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
initialSize="40"
maxActive="300" 
maxIdle="250" 
minIdle="90"
maxWait="10000" 
minEvictableIdleTimeMillis="300000" 
timeBetweenEvictionRunsMillis="120000"
validationInterval="30000"
validationQuery="SELECT 1" 
testOnBorrow="true" 
logAbandoned="true"
removeAbandoned="true" 
removeAbandonedTimeout="60" 
abandonWhenPercentageFull="50"
jdbcInterceptors="ResetAbandonedTimer"
/>

并且配置在 context.xml 文件中。

【问题讨论】:

【参考方案1】:

内存泄漏警告是正确的。它指的是几周前修复的 Tomcat 7.0.x 中的一个已知问题 (r1744702),并将包含在 7.0.70 之后的版本中。

【讨论】:

以上是关于服务器因 [Pool-Cleaner]:Tomcat 连接池而停止响应,但未能停止它。这很可能造成内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

JMeter测试,提高Tomca性能,链接池

tomca端口转发

Tomca的启动与关闭

Tomca杂记

linux 下启动tomca慢问题

Tomca启动脚本遇到的坑