2013-08-22 38 views
0

在Weblogic 12c/Solaris 10生產系統上,處理請求的時間約爲5秒。應用程序本身部署在Weblogic上的時間少於200ms,之後執行的線程在weblogic內部方法DynaQueue.getW中被阻塞5秒。在應用程序處理請求後,Weblogic掛起DynaQueue.getW

當問題發生時,服務器上沒有負載。

你知道什麼會導致這種惱人的行爲?任何想法如何進一步調查?

這裏是懸掛執行的線程的堆棧跟蹤:

「[有效] ExecuteThread: '4' 的隊列: 'weblogic.kernel.Default(自調諧)'」 守護進程> PRIO = 3 TID = 0x0000000107280000 NID = 0×27在的Object.wait()[0xffffffff66cfe000] java.lang.Thread.State中:TIMED_WAITING(對象監視器上) 在java.lang.Object.wait(本機方法) - 等待< 0xfffffffe911c6770 >(a weblogic.socket.utils.DynaQueue) at weblogic.socket.utils.DynaQueue.getW(DynaQueue.java:237) - locked < 0xfffffffe911c6770>(a weblogic.socket.utils.DynaQueue) 在weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:336) 在weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29) 在weblogic.work.ExecuteThread.execute( ExecuteThread.java:256) 在weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

回答

0

這件事是通過在水平的Solaris網絡資源消耗所致。應用程序代碼中的一個錯誤是過於頻繁地初始化連接池。

一旦應用程序代碼被修復,Weblogic開始像魅力一樣工作。