在 Weblogic 12c / Solaris 10 生产系统上,处理请求的时间约为 5 秒。应用程序本身部署在 Weblogic 上所用的时间不到 200 毫秒,之后在 weblogic 内部方法 DynaQueue.getW 中执行线程被阻塞 5 秒。
当问题发生时,服务器上没有负载。
你知道什么会导致这种恼人的行为吗?知道如何进一步调查吗?
这是挂起的执行线程的堆栈跟踪:
“[ACTIVE] ExecuteThread: '4' for queue:'weblogic.kernel.Default (self-tuning)'”守护进程 > prio=3 tid=0x0000000107280000 nid=0x27 in Object.wait() [0xffffffff66cfe000] java.lang.Thread .State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - 在 weblogic.socket.utils.DynaQueue.getW(DynaQueue.getW(DynaQueue. java:237) - 在 weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29) 处的 weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:336) 处锁定 <0xffffffffe911c6770> (weblogic.socket.utils.DynaQueue) weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:221)