簡體   English   中英

為什么 Tomcat 5.5(帶 Java 1.4,在 Windows XP 32 位上運行)突然掛起?

[英]Why does Tomcat 5.5 (with Java 1.4, running on Windows XP 32-bit) suddenly hang?

我已經運行 Tomcat 5.5 和 Java 1.4 有一段時間了,現在有一個巨大的 web 應用程序。 大多數時候它運行良好,但有時它會掛起,不會產生異常,除了重新啟動 Tomcat 之外,沒有明顯的方法讓它再次運行。 tomcat 實例在堆上允許有千兆字節的 memory,但很少超過 300 MB。 有沒有其他人遇到過這個問題,是否有解決方案?

澄清一下:我通過任務管理器和 Eclipse 確定了它使用了多少 memory (我也嘗試在 Eclipse 之外運行它,但最終得到了同樣的問題,但它需要更長的時間,但是) 使用 Eclipse,我查看通過其小(可選)memory 窗格分配的 memory 和通過任務管理器分配給 javaw.exe 的數量。 我用的是sysdeo? Eclipse 的 tomcat 插件。

對於任何 jvm 進程,強制執行線程轉儲。 在 windows 中,我相信在控制台 window 中,可以使用 CTRL-BREAK 來完成。

在 *nix 中,它幾乎總是“kill -3 jvm-pid”。

這可能會顯示您是否有線程在數據庫連接池/線程池等上等待。

要檢查的另一件事是您當前與 JVM 有多少連接 - 使用 NETSTAT 或 SysInternals 實用程序,例如 tcpconn/tcpview (google it)。

此外,嘗試使用 verbose:gc JVM 標志運行。 對於 Sun 的 JVM,像“java -verbose:gc”一樣運行。 這將顯示您的垃圾 collections。 如果它收集了很多(特別是完整的 COLLECTIONS),那么您可能有 memory 泄漏。 完整的 collections 成本很高,尤其是在這樣的大堆上。

您如何確定僅使用了 300mb?

聽起來你正在陷入僵局。

如果您可以在開發環境中重現它,那么在它發生后嘗試附加調試器。 看看你的線程,看看你是否有任何死鎖。

正如 Dustin 指出的那樣,如果您無法附加調試器,您應該能夠生成線程轉儲。

嘗試增加 Tomcat 應用服務器的日志記錄敏感度。 http://tomcat.apache.org/tomcat-5.5-doc/logging.html

您可以在幾天內提高大多數人對 FINEST 或 ALL 的敏感度,看看這是否有助於您捕捉到任何東西。

我同意創建多個線程轉儲並通過以下方式查看它們: Thread Dump Analyzer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM