0

在 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)

4

1 回答 1

0

该问题是由 Solaris 级别的网络资源耗尽引起的。应用程序代码中的一个错误是过于频繁地初始化连接池。

一旦应用程序代码被修复,Weblogic 就开始像魅力一样工作。

于 2013-11-27T02:00:25.323 回答