EhCache Weblogic死锁?

时间:2012-12-14 23:15:15

标签: java weblogic solaris deadlock ehcache

有一个web服务客户端使用ehcache来缓存一些结果并避免太多ws调用。

显然,调用此ws客户端的服务器(在Weblogic OSB上)只是挂起,甚至没有在日志中写任何东西......只是免费!只要有一点点的流量就可以了。

完整的线程转储在这里:

http://pastebin.com/rdVyxjNc

下面是我不太清楚停车等待< 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)
        ...

1 个答案:

答案 0 :(得分:2)

您突出显示的主题实际上是“可用的”来处理请求而不是问题。 Weblogic Oracle Service Bus依赖于XQuery进行XML操作。众所周知,XQuery既是CPU又是用于对抗大数据有效负载时内存密集。

我刚刚分析了你的线程转储。线程转储显然是一种高CPU模式,其中多个线程正在执行诸如解析XML和尝试在某些数据结构(如ArrayList等)中分配内存等任务。

我怀疑“挂起”问题的根源有两种可能的情况:

过多的垃圾收集&amp; OldGen空间耗尽

HotSpot JVM 1.6+包含底部的Java堆利用率。我们可以看到OldGen的空间为92%。这将重新强制执行我们从Thread Dump中看到的线程模式。

  1. PSYoungGen总计466944K,使用233472K [0xd1000000,0xfbc00000,0xfbc00000]
  2. 伊甸园空间233472K,100%使用[0xd1000000,0xdf400000,0xdf400000]
  3. 来自太空233472K,0%使用[0xed800000,0xed800000,0xfbc00000]
  4. 到空间233472K,0%使用[0xdf400000,0xdf400000,0xed800000)
  5. ParOldGen 总计1400832K,使用1297110K [0x7b800000,0xd1000000,0xd1000000]
  6. 对象空间1400832K, 92%使用[0x7b800000,0xcaab5ac8,0xd1000000]
  7. PSPermGen总计262144K,使用167570K [0x6b800000,0x7b800000,0x7b800000]
  8. 对象空间262144K,63%使用[0x6b800000,0x75ba4ab0,0x7b800000]
  9. 消耗CPU和/或Java堆内存的罪魁祸首线程

    在这种情况下,一个或几个线程可能涉及不间断处理,例如非返回XQuery等导致CPU浪涌和JVM争用。

    现在找到我的建议:

    • 启用详细信息:gc。这将允许您执行健康和垃圾收集频率的Java堆的足迹评估
    • 下次出现问题时,每个线程分析执行一次CPU%。这将允许您确定是否正在处理消耗CPU和/或Java堆内存的特定Service Bus请求

    从我的博客中查找以下文章,以帮助您进入下一个分析阶段:

    详细的GC分析

    JVM Verbose GC tutorial

    Java高CPU故障排除

    Java High CPU troubleshooting

    此致 p-h