<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><base href="x-msg://392/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>My pleasure - I'm glad it helped. But I'd recommend being very thorough in your testing now … 5.5 is quite a big step up from 5.2! :)</div><div><br></div><br><div><div>On 28 Jan 2013, at 13:26, Nelio Alves Pereira Filho &lt;<a href="mailto:npereira@cielo.com.br">npereira@cielo.com.br</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div lang="PT-BR" link="blue" vlink="purple" style="font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div class="WordSection1" style="page: WordSection1; "><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Hello Stephen<o:p></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">&nbsp;</span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Your suggestion improved a lot the performance, but after a while the application still started to execute poorly.<o:p></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">&nbsp;</span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">After more analysis, we identified that there was a memory leak behavior in Drools 5.2. I upgraded to the 5.5 version and the performance now is fantastic.<o:p></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">&nbsp;</span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Tks<o:p></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">&nbsp;</span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><span lang="EN-US" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">&nbsp;</span></div><div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: 3pt 0cm 0cm; "><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; ">De:</span></b><span style="font-size: 10pt; font-family: Tahoma, sans-serif; "><span class="Apple-converted-space">&nbsp;</span><a href="mailto:rules-users-bounces@lists.jboss.org" style="color: purple; text-decoration: underline; ">rules-users-bounces@lists.jboss.org</a><span class="Apple-converted-space">&nbsp;</span>[mailto:rules-<a href="mailto:users-bounces@lists.jboss.org" style="color: purple; text-decoration: underline; ">users-bounces@lists.jboss.org</a>]<span class="Apple-converted-space">&nbsp;</span><b>Em nome de<span class="Apple-converted-space">&nbsp;</span></b>Stephen Masters<br><b>Enviada em:</b><span class="Apple-converted-space">&nbsp;</span>terça-feira, 22 de janeiro de 2013 15:57<br><b>Para:</b><span class="Apple-converted-space">&nbsp;</span>Rules Users List<br><b>Assunto:</b><span class="Apple-converted-space">&nbsp;</span>Re: [rules-users] Drools locking threads<o:p></o:p></span></div></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Hi there,<o:p></o:p></div></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">If I understand correctly, you're creating the stateless knowledge session once and then providing access to execute it from multiple threads. That's not going to work too well … especially on 5.2. For each request using a stateless knowledge session you should call&nbsp;<span style="font-size: 8.5pt; font-family: Monaco, serif; color: rgb(3, 38, 204); ">kbase</span><span style="font-size: 8.5pt; font-family: Monaco, serif; ">.newStatelessKnowledgeSession()</span><o:p></o:p></div></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">i.e. Create the knowledge base once, but create a session for each request.<o:p></o:p></div></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">Steve<o:p></o:p></div></div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div><div><div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">On 22 Jan 2013, at 15:14, nalvesp &lt;<a href="mailto:npereira@cielo.com.br" style="color: purple; text-decoration: underline; ">npereira@cielo.com.br</a>&gt; wrote:<o:p></o:p></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><br><br><o:p></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">I need some support with Drools. I'm using Drools 5.2 in a multi-threaded<br>environment. Basicaly, every login into a website is calling an execute<br>method in a StatelessKnowledgeSession. After some time, threads start to<br>lock as below:<br><br>"[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default<br>(self-tuning)'" id=18 idx=0xc0 tid=7267 prio=5 alive, in native, blocked,<br>daemon<br>&nbsp;&nbsp;&nbsp;-- Blocked trying to get lock:<br>org/drools/event/RuleBaseEventSupport@0x2aab52d6f518[fat lock]<br>&nbsp;&nbsp;&nbsp;at jrockit/vm/Threads.waitForUnblockSignal()V(Native Method)<br>&nbsp;&nbsp;&nbsp;at jrockit/vm/Locks.fatLockBlockOrSpin(Locks.java:1679)[optimized]<br>&nbsp;&nbsp;&nbsp;at jrockit/vm/Locks.lockFat(Locks.java:1780)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>jrockit/vm/Locks.monitorEnterSecondStageHard(Locks.java:1312)[optimized]<br>&nbsp;&nbsp;&nbsp;at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1259)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/event/AbstractEventSupport.addEventListener(AbstractEventSupport.java:65)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/common/AbstractRuleBase.addEventListener(AbstractRuleBase.java:1018)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/impl/KnowledgeBaseImpl.addEventListener(KnowledgeBaseImpl.java:127)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>org/jbpm/process/instance/ProcessRuntimeImpl.initProcessEventListeners(ProcessRuntimeImpl.java:201)<br>&nbsp;&nbsp;&nbsp;at<br>org/jbpm/process/instance/ProcessRuntimeImpl.&lt;init&gt;(ProcessRuntimeImpl.java:68)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>org/jbpm/process/instance/ProcessRuntimeFactoryServiceImpl.newProcessRuntime(ProcessRuntimeFactoryServiceImpl.java:10)<br>&nbsp;&nbsp;&nbsp;at<br>org/jbpm/process/instance/ProcessRuntimeFactoryServiceImpl.newProcessRuntime(ProcessRuntimeFactoryServiceImpl.java:6)<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/runtime/process/ProcessRuntimeFactory.newProcessRuntime(ProcessRuntimeFactory.java:12)<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/common/AbstractWorkingMemory.createProcessRuntime(AbstractWorkingMemory.java:359)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/common/AbstractWorkingMemory.setKnowledgeRuntime(AbstractWorkingMemory.java:1260)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/impl/StatefulKnowledgeSessionImpl.&lt;init&gt;(StatefulKnowledgeSessionImpl.java:116)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/impl/StatelessKnowledgeSessionImpl.newWorkingMemory(StatelessKnowledgeSessionImpl.java:129)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>org/drools/impl/StatelessKnowledgeSessionImpl.execute(StatelessKnowledgeSessionImpl.java:293)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>br/com/cielo/engineRules/services/impl/CancelamentoRuleBean.validarRegrasCancelamento(CancelamentoRuleBean.java:79)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>br/com/cielo/engineRules/services/impl/CancelamentoRuleEJB_vyscvn_EOImpl.validarRegrasCancelamento(CancelamentoRuleEJB_vyscvn_EOImpl.java:205)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>br/com/cielo/engineRules/services/impl/CancelamentoRuleEJB_vyscvn_EOImpl_WLSkel.invoke(ILweblogic/rmi/spi/InboundRequest;Lweblogic/rmi/spi/OutboundResponse;Ljava/lang/Object;)Lweblogic/rmi/spi/OutboundResponse;(Unknown<br>Source)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/rmi/internal/BasicServerRef.invoke(BasicServerRef.java:589)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/rmi/cluster/ClusterableServerRef.invoke(ClusterableServerRef.java:230)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/rmi/internal/BasicServerRef$1.run(BasicServerRef.java:477)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/security/acl/internal/AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/security/service/SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSubject;Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;(Unknown<br>Source)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/rmi/internal/BasicServerRef.handleRequest(BasicServerRef.java:473)[inlined]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/rmi/internal/wls/WLSExecuteRequest.run(WLSExecuteRequest.java:118)[optimized]<br>&nbsp;&nbsp;&nbsp;at<br>weblogic/work/ExecuteThread.execute(ExecuteThread.java:201)[optimized]<br>&nbsp;&nbsp;&nbsp;at weblogic/work/ExecuteThread.run(ExecuteThread.java:173)<br>&nbsp;&nbsp;&nbsp;at jrockit/vm/RNI.c2java(JJJJJ)V(Native Method)<br>&nbsp;&nbsp;&nbsp;-- end of trace<br><br>I went to Drool's source code and there's a synchronized section right<br>before the lock. I'm afraid Drools doesn't support multi-thread processing.<br><br>Does anyone know anything about this issue???<br><br>Tks<br><br><br><br><br>--<br>View this message in context:<span class="Apple-converted-space">&nbsp;</span><a href="http://drools.46999.n3.nabble.com/Drools-locking-threads-tp4021732.html" style="color: purple; text-decoration: underline; ">http://drools.46999.n3.nabble.com/Drools-locking-threads-tp4021732.html</a><br>Sent from the Drools: User forum mailing list archive at<span class="Apple-converted-space">&nbsp;</span><a href="http://Nabble.com" style="color: purple; text-decoration: underline; ">Nabble.com</a>.<br>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" style="color: purple; text-decoration: underline; ">rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" style="color: purple; text-decoration: underline; ">https://lists.jboss.org/mailman/listinfo/rules-users</a><o:p></o:p></div></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; "><o:p>&nbsp;</o:p></div></div>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" style="color: purple; text-decoration: underline; ">rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" style="color: purple; text-decoration: underline; ">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></div></blockquote></div><br></body></html>