2012-08-14 65 views
1

我在我們的開發應用程序中面臨掛起java線程的問題。以下是日誌跟蹤: 關於線程在websphere中掛起的問題

020 SystemOut  O -------------------------------------------------------------------------------- 
[8/1/12 11:00:21:136 CDT] 00000023 ThreadMonitor W WSVR0605W: Thread "WebContainer : 6" (00000027) has been active for 731757 milliseconds and may be hung. There is/are 2 thread(s) in total in the server that may be hung. 
[8/1/12 11:00:24:626 CDT] 00000021 FreePool  E J2CA0045E: Connection not available while invoking method createOrWaitForConnection for resource jdbc/RTNCTR_DEV. 
[8/1/12 11:00:24:636 CDT] 00000021 SystemOut  O 
[8/1/12 11:00:24:636 CDT] 00000021 SystemOut  O -------------------------------------------------------------------------------- 

無法找到此問題的根本原因,請告知可能的解決辦法,人們請指教,因爲我卡住了.. !!

+0

我想你的線程掛起是因爲websphere無法連接到數據庫並被卡住。檢查數據庫有多少連接處於活動狀態,因爲您可能會遇到限制。當您重新啓動websphere和db時,問題是否會再次出現。連接有效嗎? – beny23 2012-08-14 09:24:27

回答

2

對於初學者,您希望通過請求javacore thread dump來找到特定線程卡住的位置。

在UNIX平臺上,您只需在進程ID上發出kill -3。在Windows上,您需要使用wsadmin commands(它也適用於UNIX,但不像kill -3那麼快)。

搜索WebContainer : 6的結果文件,並且該線程的堆棧跟蹤將顯示您在應用程序或WebSphere中線程被卡住的位置。

參見Problem determination for javacore files from WebSphere Application Server

2

看起來它卡在等待與數據源'jdbc/RTNCTR_DEV'的連接。我的猜測是要麼你沒有可用的連接,要麼你的應用程序正在泄漏它們。做早些時候說的那個,並且檢查連接是否有效(在重新啓動之後),如果它工作並且突然停止(例如在10次查詢之後),那麼你有泄漏。如果他們根本不工作,請查看WAS中的數據源配置。

如果它泄漏,然後通過你的應用程序,並找到你沒有返回連接池或關閉連接 - 這取決於你的應用程序如何工作。

我們也遇到類似問題的問題。原來通過在數據源上添加一個自定義設置來解決,以將連接設置設置爲false。我們當然首先確定這不是我們的應用程序泄露連接。

+1

您能否詳細說明您的陳述「在數據源上添加自定義設置以進一步設置連接設置爲false」?謝謝。 – Joset 2014-12-08 03:42:27