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 
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to