<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Monaco;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EstiloDeEmail17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
-->
</style><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>
<body lang="PT-BR" link="blue" vlink="purple" style="word-wrap: break-word;
-webkit-nbsp-mode: space;-webkit-line-break: after-white-space">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">Hello Stephen<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">Your suggestion improved a lot the performance, but after a while the application still started to execute poorly.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">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></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">Tks<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">De:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org]
<b>Em nome de </b>Stephen Masters<br>
<b>Enviada em:</b> terça-feira, 22 de janeiro de 2013 15:57<br>
<b>Para:</b> Rules Users List<br>
<b>Assunto:</b> Re: [rules-users] Drools locking threads<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<p class="MsoNormal">Hi there,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">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 &#8230; especially on 5.2. For each request using a stateless knowledge
 session you should call&nbsp;<span style="font-size:8.5pt;font-family:&quot;Monaco&quot;,&quot;serif&quot;;color:#0326CC">kbase</span><span style="font-size:8.5pt;font-family:&quot;Monaco&quot;,&quot;serif&quot;">.newStatelessKnowledgeSession()</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">i.e. Create the knowledge base once, but create a session for each request.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<div>
<p class="MsoNormal">Steve<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<div>
<p class="MsoNormal">On 22 Jan 2013, at 15:14, nalvesp &lt;<a href="mailto:npereira@cielo.com.br">npereira@cielo.com.br</a>&gt; wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<p class="MsoNormal">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>
&quot;[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default<br>
(self-tuning)'&quot; 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: <a href="http://drools.46999.n3.nabble.com/Drools-locking-threads-tp4021732.html">
http://drools.46999.n3.nabble.com/Drools-locking-threads-tp4021732.html</a><br>
Sent from the Drools: User forum mailing list archive at <a href="http://Nabble.com">
Nabble.com</a>.<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
https://lists.jboss.org/mailman/listinfo/rules-users<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>