2010-03-04 42 views

回答

3

最常見的原因是非守護線程仍在運行(Tomcat FAQ)。有關守護線程的更多信息,請單擊here

要找出哪個線程導致(在UNIX上)問題:

  • 做一個kill -3 tomcatProcId(找到tomcatProcId用ps)
  • 看看$ TOMCAT_HOME /日誌/ catalina.out中內的線程dump生成的轉儲
  • 查看與VM/GC無關的所有非守護程序線程(那些未標記爲「守護程序」的線程)
  • 對於每個線程,找出生成它的代碼以及爲什麼它具有沒有終止更正ectly。一些非守護線程經常檢查終止,這是正確的。

如果你願意,你可以指示Tomcat來關機後取消JVM,即使非守護線程保持(這有時可能是一個bad thing):

  • 定義CATALINA_PID環境變量。例如:export CATALINA_PID=/tmp/catalina_pid
  • 使用catalina.sh stop -force停止Tomcat。
+0

+1,但我不知道它是該協議,請閱讀我的答案,並發表評論,如果你不認爲它可以解決我自己的問題 – 2010-05-22 16:44:38

+0

好點。我錯過了「然後Tomcat關閉」部分。在這種情況下,你的答案似乎是正確的,你應該接受它。我希望我的回答仍然可以幫助其他人,他們可能會遇到守護線程問題。 – 2010-05-23 11:15:53

+1

謝謝,對於徹底的答案男人,你剛剛救了我的一天。 – 2011-03-02 14:36:17

相關問題