我们在 Windows 2008 Server 上运行 tomcat 6.0.35。
每隔几天就会耗尽内存。我们在日志中注意到服务器正在随机重新初始化。
我们在 tomcat 日志中看到了这一点。
[主要] INFO org.apache.catalina.core.StandardService-启动服务 Catalina
每次发生故障时,我们都会看到以下警告消息:
错误 org.apache.catalina.loader.WebappClassLoader- Web 应用程序 [/webconsole] 创建了一个 ThreadLocal,其键类型为 [org.apache.log4j.helpers.ThreadLocalMap](值 [org.apache.log4j.helpers.ThreadLocalMap@38fc73ee]),值类型为 [java.util.Hashtable](值 [{}]),但在 Web 应用程序停止时未能将其删除。这很可能造成内存泄漏。
我们认为这可能是log4j 错误。
然而,更大的问题是服务器为什么要重新初始化?我们检查了是否有一些文件在被监视并因此导致重新启动,但没有。
如果有人能给出任何指点我将非常感激。
答案1
这看起来像是 tomcat 的内存泄漏检测/预防功能被触发时记录的错误消息类型。内存泄漏保护Tomcat Wiki 上的页面有更多相关信息。
您可以通过在元素autoDeploy
中禁用来停止重新初始化。 Tomcat 默认设置为Host
server.xml
autoDeploy
真的。