技术文章 - CS321821
如果关联队列在 ThingWorx Platform 上已满,则更新 Remote Things 的 lastConnectionTime 属性可能会造成死锁情况
已修改: 22-Nov-2022
适用于
- ThingWorx Platform 8.1 to 8.5
说明
- 当许多远程事物同时连接时,ThingWorx 平台会变得不稳定
- lastConnectionTime属性更新似乎与 ThingWorx 性能有关
- ThingWorx Platform 性能不佳
- ThingWorx Platform 已停止工作并且无法再访问 Composer
- 线程转储显示大量线程在 java.util.concurrent.locks.ReentrantLock$NonfairSync 上等待:
- 阻塞线程
"https-jsse-nio-8443-exec-85" tid=0x7746d in WAITINGBlocked: 2696[-1ms], Waited: 879194[-1ms] User CPU: 35m26s - synchronizer <0x143fa594> (a java.util.concurrent.ThreadPoolExecutor$Worker) at sun.misc.Unsafe.park(Native Method) - waiting on <0x37c62d09> (a java.util.concurrent.locks.ReentrantLock$NonfairSync), held by https-jsse-nio-8443-exec-84 at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199) at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209) at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285) at com.thingworx.communications.platform.modules.DispatchingServerCommunicationModule.processBindMessage(DispatchingServerCommunicationModule.java:471) at com.thingworx.communications.platform.modules.DispatchingServerCommunicationModule.processCompletedBindMessage(DispatchingServerCommunicationModule.java:348) at com.thingworx.communications.platform.modules.DispatchingServerCommunicationModule.processBindRequestMessage(DispatchingServerCommunicationModule.java:267) at com.thingworx.communications.platform.modules.DispatchingServerCommunicationModule.process(DispatchingServerCommunicationModule.java:146) at com.thingworx.communications.server.endpoints.DispatchingServerEndpoint.messageReceived(DispatchingServerEndpoint.java:116) at com.thingworx.communications.server.connection.jsr356.Jsr356ServerConnection.onMessage(Jsr356ServerConnection.java:338) at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43 - 锁定线程:
"https-jsse-nio-8443-exec-84" tid=0x77467 in WAITINGBlocked: 2755[-1ms], Waited: 881187[-1ms] User CPU: 38m20s - synchronizer <0x37c62d09> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) - synchronizer <0x3f476c55> (a java.util.concurrent.ThreadPoolExecutor$Worker) at sun.misc.Unsafe.park(Native Method) - waiting on <0x6f66f64> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.putLast(LinkedBlockingDeque.java:396) at java.util.concurrent.LinkedBlockingDeque.put(LinkedBlockingDeque.java:649) at com.thingworx.persistence.provider.StreamEntryProcessor.queueEntry(StreamEntryProcessor.java:142) at com.thingworx.system.managers.ThingManager$PersistentPropertyCache.put(ThingManager.java:796) at com.thingworx.things.Thing.rawSetPropertyVTQ(Thing.java:4103) at com.thingworx.things.Thing.rawSetPropertyVTQ(Thing.java:4063) at com.thingworx.things.connected.RemoteThing.updateLastConnection(RemoteThing.java:322) at com.thingworx.things.connected.RemoteThing.setConnected(RemoteThing.java:291) at com.thingworx.things.connected.RemoteThing.setCommunicationEndpoint(RemoteThing.java:359) at com.thingworx.things.connected.RemoteThing.bindEndpoint(RemoteThing.java:419) ...
- 阻塞线程
这是文章 321821 的 PDF 版本,可能已过期。最新版本 CS321821