This is strange - do you mean that those 18 KnowledgeAgents stored in that
Map produce 18 different StatefulKnowledgeSessions?
What does the Map<X,Y> map? X? Y?
-W
2011/7/13 Jeffrey Schneller <jeffrey.schneller(a)envisa.com>
I am currently running version 5.1.0M2. I have 18 different binary
rulesets [packages] that are stored on the local filesystem. The rulesets
range in size from 4K to 131Mb. ****
** **
When my application starts I load each ruleset into a knowledgeAgent and
store the knowledgeAgent into a hashmap which is stored in memory. They
are loaded using the following xml:****
** **
<?xml version=\"1.0\" encoding=\"UTF-8\"?>****
<change-set
xmlns='http://drools.org/drools-5.0/change-set' xmlns:xs='
http://www.w3.org/2001/XMLSchema-instance' xs:schemaLocation='
http://drools.org/drools-5.0/change-set.xsd'>****
<add>****
<resource source='file://PATH_TO_BINARY' type='PKG' />****
</add>****
</change-set>****
** **
The knowledgeAgentConfiguration is setup as:****
drools.agent.scanDirectories = false****
drools.agent.newInstance = false****
drools.agent.scanResources = false****
drools.agent.monitorChangeEvents = false****
** **
After the all the agents are loaded and stored in the hashmap the total
memory used in the app is 6.2GB. ****
** **
Once the application is running, if a business user needs to update a set
of rules there is a process in place to refresh all the knowledgeAgents with
new rulesets. In a new thread. the code clears the hashmap, sets the
hashmap to null, calls for garbage collection to occur, and it then
constructs a new hashmap and loads all the rules as it does at application
startup. ****
** **
The knowledge agent is logging the following when the ruleset is loaded:**
**
KnowledgeAgent applying ChangeSet****
KnowledgeAgent performing an incremental build of the ChangeSet****
KnowledgeAgent incremental build of KnowledgeBase finished and in use****
** **
** **
It takes a large amount of time to do this process [double to triple the
time of application startup]. After this occurs the memory used by the app
increases [to nearly double the original size 12.2GB] and the CPU is maxed
out. After some time the CPU usage drops and the app is usable again but
the memory never decreases. If a business user refreshes the rules again,
the memory increases again and the CPU is maxed out and the app becomes
unresponsive because the memory is completely maxed out.****
** **
There is obviously a memory leak somewhere and a large one at that. Is
this the proper way to be caching KnowledgeAgents into memory so the
rulessets don’t need to be re-loaded everytime a knowledgeAgent is run? Is
my problem the use of the hashmap? Do I need to remove the original
knowledgeAgents that were in the hashmap?****
** **
** **
Thanks for any help.****
** **
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users