有一个web服务客户端使用ehcache来缓存一些结果并避免太多ws调用。
显然,调用此ws客户端的服务器(在Weblogic OSB上)只是挂起,甚至没有在日志中写任何东西......只是免费!只要有一点点的流量就可以了。
完整的线程转储在这里:
下面是我不太清楚停车等待< 0x8a03c9c0>
但我可以;在线程转储中找到对0x8a03c9c0的任何引用。
您是否在线程转储中看到可能导致此服务器冻结的任何内容?
由于
searchByTemplate.data" prio=3 tid=0x0115b400 nid=0x5e waiting on condition [0x5ef7f000..0x5ef7fbf0]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x8a03c9c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
...
答案 0 :(得分:2)
您突出显示的主题实际上是“可用的”来处理请求而不是问题。 Weblogic Oracle Service Bus依赖于XQuery进行XML操作。众所周知,XQuery既是CPU又是用于对抗大数据有效负载时内存密集。
我刚刚分析了你的线程转储。线程转储显然是一种高CPU模式,其中多个线程正在执行诸如解析XML和尝试在某些数据结构(如ArrayList等)中分配内存等任务。
我怀疑“挂起”问题的根源有两种可能的情况:
HotSpot JVM 1.6+包含底部的Java堆利用率。我们可以看到OldGen的空间为92%。这将重新强制执行我们从Thread Dump中看到的线程模式。
在这种情况下,一个或几个线程可能涉及不间断处理,例如非返回XQuery等导致CPU浪涌和JVM争用。
现在找到我的建议:
从我的博客中查找以下文章,以帮助您进入下一个分析阶段:
此致 p-h