Drools slows down by org.drools.core.util.MVELSafeHelper.getEvaluator() under high load
Issue
- Running Planner application with multi-threads, performance goes down from 2 minutes to 7 minutes for a process. Observing thread dumps, many threads were waiting for org.drools.core.util.MVELSafeHelper.getEvaluator()
pool-11-thread-13 prio=10 tid=0x00007f489cf48800 nid=0x76a9 waiting for monitor entry [0x00007f486cbf8000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.drools.core.util.MVELSafeHelper.getEvaluator(MVELSafeHelper.java:24)
- waiting to lock <0x0000000308c8c348> (a java.lang.Class for org.drools.core.util.MVELSafeHelper)
at org.drools.core.base.extractors.MVELNumberClassFieldReader.getValue(MVELNumberClassFieldReader.java:115)
at org.drools.core.base.extractors.BaseNumberClassFieldReader.getIntValue(BaseNumberClassFieldReader.java:83)
at org.drools.core.rule.Declaration.getIntValue(Declaration.java:238)
at tmc.lotrouting.solver.Rule_44_spotCapacity973832005AccumulateExpression0Invoker.evaluate(Rule_44_spotCapacity973832005AccumulateExpression0Invoker.java:19)
at org.drools.core.base.accumulators.JavaAccumulatorFunctionExecutor.accumulate(JavaAccumulatorFunctionExecutor.java:109)
at org.drools.core.rule.SingleAccumulate.accumulate(SingleAccumulate.java:82)
at org.drools.core.phreak.PhreakAccumulateNode.reaccumulateForLeftTuple(PhreakAccumulateNode.java:841)
Environment
- Red Hat JBoss BRMS
- 6.1.0
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.