[esb-issues] [JBoss JIRA] Commented: (JBESB-1504) CBR using rules has poor performance
Daniel Bevenius (JIRA)
jira-events at lists.jboss.org
Wed Jun 25 06:49:28 EDT 2008
[ http://jira.jboss.com/jira/browse/JBESB-1504?page=comments#action_12418853 ]
Daniel Bevenius commented on JBESB-1504:
----------------------------------------
As long as we take into account that the first run will take longer time, then successive runs will not cause the rule base to reloaded, but a check will be done to compare the rule set that exists in-memory to the one of the file system.
I don't thing that the performance hit is in that check. I think that it has do to with the test is making 100 method calls to org.jboss.internal.soa.esb.services.routing.cbr.xmlContentEquals. As the the xpath expression is the same everytime, there might be a performance gain to cache the compiled xpath expression but I'm not sure.
I'll investigate this and to find out here the overhead is.
While I've got you there perhaps you can help me....
I've tried to run the test in https://svn.corp.jboss.com/repos/soa/trunk/qa/tests/ by running:
'ant -Dtestng.filter=Performance8Test -Dtest.performance.messagecount=1 -Dtest.performance.messagefile=5KB_message.xml -Dtest.performance.sender=jms -Dtest.performance.speed=backlog executeng' and not getting any errors but the test report does not contain anything and server only logs:
[ESBCallback] Cleaning message store
Am I doing something wrong here, or where should I be looking for reports from the test?
Thanks
> CBR using rules has poor performance
> ------------------------------------
>
> Key: JBESB-1504
> URL: http://jira.jboss.com/jira/browse/JBESB-1504
> Project: JBoss ESB
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Content Based Routing
> Affects Versions: 4.2.1
> Environment: SOA-P 4.2.0.beta1
> Reporter: Martin Vecera
> Assigned To: Daniel Bevenius
> Fix For: 4.4
>
> Attachments: JBESB-1504.tar.bz2
>
>
> We have a simple performance that uses ContentBasedRouter to route XML messages:
> <action class="org.jboss.soa.esb.actions.ContentBasedRouter" name="ContentBasedRouter">
> <property name="ruleSet" value="MyESBRules-XPath.drl"/>
> <property name="ruleLanguage" value="XPathLanguage.dsl"/>
> <property name="ruleReload" value="true"/>
> <property name="destinations">
> <route-to destination-name="regular1" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular2" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular3" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular4" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular5" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular6" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular7" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular8" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular9" service-category="wiretapCategory1" service-name="regularService"/>
> <route-to destination-name="regular0" service-category="wiretapCategory1" service-name="catchService"/>
> </property>
> </action>
> I have created a rule set of 100 rules. Like this:
> package com.jboss.soa.esb.routing.cbr
> import org.jboss.soa.esb.message.Message;
> import org.jboss.soa.esb.message.format.MessageType;
> expander XPathLanguage.dsl
> global java.util.List destinations;
> rule "ProductId1"
> salience 100
> when
> xpathEquals "/Order/OrderLines/OrderLine/Product/@productId", "1"
> then
> Destination : "regular1";
> end
> ...
> rule "ProductId299"
> salience 100
> when
> xpathEquals "/Order/OrderLines/OrderLine/Product/@productId", "299"
> then
> Destination : "regular0";
> end
> rule "Default rule"
> salience 1
> when
> then
> Destination : "regular0";
> end
> See https://svn.corp.jboss.com/repos/soa/trunk/qa/tests/quickstarts/performance8/MyESBRules-XPath.drl for the whole file.
> The performance is very poor (see SOA-240 for reports). Only a tens of messages per second.
> What's the problem here? Is the Rules engine really so slow? Or is it parsing the file every time a message arrives?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the esb-issues
mailing list