2012-12-25 25 views
1

我有一個正在運行的Java servlet,但現在我發送了一些請求,並且它停滯不前 - 正如您在屏幕截圖中看到的,它的運行時間超過了48000秒,這是超過半天: https://docs.google.com/open?id=0B-mMfXyy8lylYWZoN0FJQW5aUE0Tomcat請求需要半天多時間,並且仍在運行

這並沒有發生過,當我直接從Java(沒有雄貓)運行此功能時不會發生。

a。我該如何調試,看看Tomcat服務器實際上被卡住了?

b。有沒有辦法殺死這些請求? (我試過重新啓動webapp,但請求一直在運行......)

P.S.我忘了說我在Windows服務器上。

+0

你可以使用類似VisualVM/Jconsole的東西來識別罪魁禍首。通過分析線程轉儲,你可能會得到一些線索。 – kosa

回答

2

a。我該如何調試,看看Tomcat服務器實際上被卡住了?

  1. 檢查應用程序日誌(在Tomcat),這應該給你一些線索,如果有一個與你的應用程序的任何問題。

  2. 以線程轉儲和分析(有工具來分析線程轉儲)。如果您的應用程序被掛起,這會有很大的幫助。

b。有沒有辦法殺死這些請求? (我試着重新啓動web應用程序,但要求繼續往前跑......)

您可以通過您的UNIX主機上運行以下命令

ps -ef | grep java 

這將列出連同所有的java程序列出所有java進程他們的PID。您可以使用kill命令殺死單個進程(kill -9 PID)。

+0

我忘了說,我在Windows上。以下是進程:https://docs.google.com/open?id=0B-mMfXyy8lylUFRHb3FjcjI0Wk0有兩個Tomcat進程,我刪除了它們,但請求沒有停止。 Tomcat進程在幾秒鐘後重新出現。 –

+1

它看起來像Tomcat作爲Windows服務運行。在服務選項卡下查找與Tomcat相關的任何內容,並嘗試從那裏重新啓動它。 –

+0

好吧,我設法重新啓動了Tomcat服務,這明顯殺死了所有的請求,但它也重新啓動了我所有的其他web應用程序......有沒有辦法停止特定請求而不會終止整個服務? –

相關問題