我有一个Tomcat 7在Linux上运行,我通过开始$CATALINA_HOME/bin/startup.sh通过和关闭$CATALINA_HOME/bin/shutdown.sh
从/etc/init.d
一切都没问题,除了1个问题.有时tomcat不会停止.
虽然我停止它,但我看到catalina.out日志正在下降,如果我这样做,ps -ef我仍然可以看到进程正在运行.
可能是什么问题呢?我该怎么调试呢?我的感觉是,这与线程有关.
因此,可疑的部分如下:
1)我使用Log4j的LogManager来检测log4j配置是否已经更改,但我做Log4jManager.shutdown 了contextDestroyed ServletContextListener
2)我使用H2数据库,我在关机时看到:
严重:Web应用程序[/ MyApplication]似乎已经启动了一个
名为[H2 Log Writer MYAPPLICATION] 的线程,但未能阻止它.
这很可能造成内存泄漏严重:Web应用程序[/ MyApplication]似乎已经启动了一个
名为[H2 File Lock Watchdog
/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase.lock.db] 的线程,但
未能阻止它.这很可能造成内存泄漏.
2012年4月2 日上午9:08:08 org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads严重:Web应用程序[/ MyApplication]
似乎已经启动了一个名为[FileWatchdog]但未能
阻止它的线程.这很可能造成内存泄漏.
有什么帮助吗?我怎样才能在这里发现问题?
更新:
我kill -3按照@daveb的建议做了一个,并在catalina.out中看到:
JVMDUMP006I正在处理转储事件"user",详细信息"" - 请稍候.JVMDUMP032I JVM使用'/etc/init.d/javacore.20120402.093922.2568.0001.txt'请求Java转储,以响应写入/etc/init.d/javacore.20120402.093922.2568.0001.txt的JVMDUMP010I Java转储事件JVMDUMP013I已处理的转储事件"用户",详细信息"".
有一个javacore /etc/init.d但我不知道如何处理它.即我应该调查哪些部分