部署: 使用hazelcast集群插件2.1.2集群中的3个openfire实例。除了集群插件之外,我们还有两个自定义插件可以正常工作。
连接(BOSH和TCP): 无连接:峰值加载时间约为10,000。
问题的性质: 我们看到随机崩溃。它随机出现。围绕这个时间的一些观察是openfire过程的线程数在几秒钟内就会达到30,000。 java堆栈跟踪告诉我们几乎所有这些线程在某些操作上都是BLOCKED。粘贴堆栈跟踪以供您参考。
观察到的堆栈跟踪是
" TaskEngine池-64675" #68993 daemon prio = 5 os_prio = 0 tid = 0x00007f125502e800 nid = 0x54e7等待监视器输入[0x00007f1312156000] java.lang.Thread.State:BLOCKED(在对象监视器上) at java.util.Collections $ SynchronizedCollection.add(Collections.java:2035) - 等待锁定< 0x00000004e58dfd00> (java.util.Collections $ SynchronizedRandomAccessList) 在org.jivesoftware.openfire.http.HttpSession.deliver(HttpSession.java:1004) 在org.jivesoftware.openfire.http.HttpSession.deliver(HttpSession.java:970) 在org.jivesoftware.openfire.session.LocalSession.process(LocalSession.java:289) 在org.jivesoftware.openfire.spi.RoutingTableImpl.routeToBareJID(RoutingTableImpl.java:633) 在org.jivesoftware.openfire.spi.RoutingTableImpl.routeToLocalDomain(RoutingTableImpl.java:303) 在org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.java:239) 在org.jivesoftware.openfire.net.SocketPacketWriteHandler.process(SocketPacketWriteHandler.java:68) 在org.jivesoftware.openfire.spi.PacketDelivererImpl.deliver(PacketDelivererImpl.java:56) 在org.jivesoftware.openfire.http.HttpSession $ 4.run(HttpSession.java:1083) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)
以上是jstack输出,而线程数已达到30,000这样的高值,服务器没有响应。有什么指针吗?跟踪似乎表明无法访问数据结构。