[rules-users] Drools Execution Server memory leak?

Mike Reynolds miker_nospam at yahoo.com
Tue Jun 28 14:37:19 EDT 2011


Using: 5.2.0.Final of drools camel server , JSON api, and a Stateless Session
We are making JSON calls to the camel (execution) server.  Our 
end-to-end unit tests pass.  Our load tests, however, show that memory 
is never reclaimed after each call to the rules engine.  After parsing 
through a heap dump, we see the following path taking up over 800 meg of
 memory: 
(kagent) KnowledgeAgentImpl$ChangeSetNotificationDetector 
> (kbase) KnowledgeAgentImpl 
>> (ruleBase) KnowledgeBaseImpl 
>>> (eventSupport) ReteooRuleBase 
>>>> (listeners) RuleBaseEventSupport 
>>>>> (array) CopyOnWriteArrayList 
>>>>>> ReteooWorkingMemory (around 864K of these) 

The rule base is very small and simple - this is only a problem during a load test (or over the course of a weeks worth of calls).  We make the following call 10K times: 
{ 
  "batch-execution": { 
    "lookup": "ksession1", 
    "commands": [ 
      { 
        "insert": { 
          "out-identifier": "tc_1", 
          "object": {.....} 
          }}]}} 
The knowledge-services.xml configures : 
 - kagent id="agent1" kbase="kbase1" new-instance="true" 
 - ksession id="ksession1" type="stateless" kbase="kbase1" node="node1" 

The rules just update the inserted "timecard" fact.

Because I'm using a stateless session, I don't think I need to 
dispose of the agent...and I don't think there is a way to call dispose 
using the json/Execution Command api. 

We are calling the camel (execution) server from a non-java 
environment to process employee timecards entries and evaluate for 
overtime calculations. 

Thanks! 
Mike 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110628/1e49cde2/attachment.html 


More information about the rules-users mailing list