analyzing the dynamic behavior we can see from the thread dump that a lot of our threads that are just doing simple queries (just selects, no update or delete ...) show locks like these (question is: why there are locks and how could we get rid of that):
log1: "qtp1523553211-271" #271 prio=5 os_prio=0 tid=0x000000004fcb3800 nid=0x440 waiting for monitor entry [0x00000000559ae000] java.lang.Thread.State: BLOCKED (on object monitor) at com.objectdb.o.LFL.UB(LFL.java:1098) - waiting to lock <0x0000000202239c10> (a com.objectdb.o.LFL) at com.objectdb.o.PAG.au(PAG.java:928) at com.objectdb.o.PGC.C(PGC.java:281) - locked <0x00000002029df788> (a java.lang.Object) at com.objectdb.o.SNP.G(SNP.java:436) at com.objectdb.o.RTT.l(RTT.java:127) at com.objectdb.o.RST.l(RST.java:24) at com.objectdb.o.RTT.D(RTT.java:179) at com.objectdb.o.RST.s(RST.java:121) at com.objectdb.o.PGT.q(PGT.java:109) at com.objectdb.o.RST.B(RST.java:93) at com.objectdb.o.RTT.l(RTT.java:132) at com.objectdb.o.RST.l(RST.java:24) at com.objectdb.o.RTT.D(RTT.java:179) at com.objectdb.o.RST.s(RST.java:121) at com.objectdb.o.PGT.q(PGT.java:109) at com.objectdb.o.RST.B(RST.java:93) at com.objectdb.o.RTT.l(RTT.java:132) at com.objectdb.o.RST.l(RST.java:24) at com.objectdb.o.TSK.i(TSK.java:145) at com.objectdb.o.TSK.f(TSK.java:95) at com.objectdb.o.TSM.e(TSM.java:86) at com.objectdb.o.RTT.D(RTT.java:177) at com.objectdb.o.RST.s(RST.java:121) at com.objectdb.o.PGT.q(PGT.java:109) at com.objectdb.o.RST.B(RST.java:93) at com.objectdb.o.RTT.l(RTT.java:132) at com.objectdb.o.RST.l(RST.java:24) at com.objectdb.o.TSK.i(TSK.java:145) at com.objectdb.o.TSK.f(TSK.java:95) at com.objectdb.o.MST.a0(MST.java:609) at com.objectdb.o.MST.Vm(MST.java:565) at com.objectdb.o.PLN.Vm(PLN.java:517) at com.objectdb.o.TAI.A(TAI.java:201) at com.objectdb.o.TAI.UI(TAI.java:134) at com.objectdb.o.TQI.UI(TQI.java:54) at com.objectdb.o.PRG.ag(PRG.java:687) at com.objectdb.o.PRG.af(PRG.java:555) at com.objectdb.o.QRM.Vo(QRM.java:286) at com.objectdb.o.MST.Vo(MST.java:988) at com.objectdb.o.WRA.Vo(WRA.java:311) at com.objectdb.o.WSM.Vo(WSM.java:115) at com.objectdb.o.QRR.g(QRR.java:247) at com.objectdb.o.QRR.f(QRR.java:153) at com.objectdb.jpa.JpaQuery.getResultList(JpaQuery.java:719) - locked <0x0000000633b83180> (a com.objectdb.jdo.PMImpl) at com.agile.hummingbird.API.handleQuery(API.java:3020) at com.agile.hummingbird.API.directRequest(API.java:852) at com.agile.hummingbird.API.handleWebSocketRequest(API.java:614) at com.agile.hummingbird.WebSocketServerListener.onWebSocketText(WebSocketServerListener.java:123) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:128) at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:65) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:122) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:161) at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:309) at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(AbstractExtension.java:163) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:105) at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(CompressExtension.java:136) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(PerMessageDeflateExtension.java:85) at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214) at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Unknown Source) Locked ownable synchronizers: - None or: "qtp1523553211-264" #264 prio=5 os_prio=0 tid=0x000000004f95f000 nid=0x1d28 runnable [0x00000000550ae000] java.lang.Thread.State: RUNNABLE at com.objectdb.o.BQI.VM(BQI.java:151) at com.objectdb.o.MQI.VM(MQI.java:145) at com.objectdb.o.MQI.VM(MQI.java:120) at com.objectdb.o.MQI.VM(MQI.java:120) at com.objectdb.o.GQI.UI(GQI.java:148) at com.objectdb.o.SQI.UI(SQI.java:108) at com.objectdb.o.PRG.ag(PRG.java:687) at com.objectdb.o.PRG.af(PRG.java:555) at com.objectdb.o.QRM.Vo(QRM.java:286) at com.objectdb.o.MST.Vo(MST.java:988) at com.objectdb.o.WRA.Vo(WRA.java:311) at com.objectdb.o.WSM.Vo(WSM.java:115) at com.objectdb.o.QRR.g(QRR.java:247) at com.objectdb.o.QRR.f(QRR.java:153) at com.objectdb.jpa.JpaQuery.getResultList(JpaQuery.java:719) - locked <0x00000007b974f4f0> (a com.objectdb.jdo.PMImpl) at com.agile.hummingbird.CT_Container.computeContainer(CT_Container.java:161) at com.agile.hummingbird.API.handleGetContainer(API.java:2484) at com.agile.hummingbird.API.directRequest(API.java:786) at com.agile.hummingbird.API.handleWebSocketRequest(API.java:614) at com.agile.hummingbird.WebSocketServerListener.onWebSocketText(WebSocketServerListener.java:123) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:128) at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:65) at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:122) at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:161) at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:309) at org.eclipse.jetty.websocket.common.extensions.AbstractExtension.nextIncomingFrame(AbstractExtension.java:163) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.nextIncomingFrame(PerMessageDeflateExtension.java:105) at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.forwardIncoming(CompressExtension.java:136) at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.incomingFrame(PerMessageDeflateExtension.java:85) at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214) at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220) at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632) at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang.Thread.run(Unknown Source) Locked ownable synchronizers: - None