У меня есть 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
, и я вижу при выключении:
SEVERE: веб-приложение [/MyApplication], похоже, запустило thread с именем [H2 Log Writer MYAPPLICATION], но не смог остановить его.
Вероятно, это приведет к утечке памяти.SEVERE: веб-приложение [/MyApplication], похоже, запустило поток с именем [H2 File Lock Watchdog
/opt/myOrg/tomcat/webapps/MyApplication/db/myDatabase.lock.db], но имеет не удалось остановить его. Вероятно, это приведет к утечке памяти. Апр. 2,
2012 9:08:08 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads SEVERE: веб-приложение [/MyApplication]
похоже, запустил нить с именем [FileWatchdog], но не сработал
чтобы остановить его. Вероятно, это приведет к утечке памяти.
Любая помощь, пожалуйста? Как я могу обнаружить проблему здесь?
UPDATE:
Я сделал kill -3
, как было предложено @daveb, и в катализе. Я вижу:
JVMDUMP006I Обработка дампа события "пользователь", подробно "- пожалуйста, подождите. JVMDUMP032I JVM запросил Java-дамп, используя '/etc/init.d/javacore.20120402.093922.2568.0001.txt' в ответ на событие JVMDUMP010I Java дамп, написанное на /etc/init.d/javacore.20120402.093922.2568.0001.txt JVMDUMP013I Обработано событие" дамп "дампа, деталь" ".
В /etc/init.d
есть javacore, но я не знаю, как его обрабатывать. То есть какие части я должен исследовать