Performance Testing Sonic ESB

Posted by Admin on 17-Feb-2009 08:47

Hi ,

I am bombarding 1000 messages to Queue on which a process is listening.

I have created 5 listeners( threads) of that process from SMC .

I am getting only around 50 messages per second at output queue which is not obviously desirable.

There are couple of database (SQL Server 2005) hits in process to have timestamps .

based on these Timestamps, i am calculating the time difference.

I am sending messages from Java standalone program which has 10 threads sending

10 messages with 180 ms delay.

am I using right way to check performance or is there any other way ?

All Replies

Posted by jtownsen on 23-Feb-2009 06:32

What is it that you are trying to performance test exactly?

Without knowing all of the details of your process, I'd guess that the bottleneck is either the SQL call itself or the translation of the incoming message into the format required for the SQL call. Is it using the standard database service or a custom service?

If the only reason you're using a SQL call is to get a timestamp, perhaps you should do something similar in a transformation/cbr/custom service?

Posted by Admin on 24-Feb-2009 02:14

I need to test How long it takes for a single message to process from entry endpoint to exit endpoint of a ESB process .

I wrote java standalone program which is sending 1000 messages to Entry endpoint of ESB Process and one more program which is listening to Exit endpoint of process.

ESB Process contains around 15 steps . most of them are database services .

I am working on Linux machine .

I am getting 3 sec required for single message when i fire 10 messages.

I am getting nearby same if i increase number of input messages.

Its not expected. I need to know how can i optimize this?

Posted by jtownsen on 24-Feb-2009 04:07

If you switch on message tracking, you'll be able to very simply find out how long each step in the process is taking. You could then look at the steps taking an unexpectedly long time and look at optimising those steps. The optimisation could take many forms, for example of changing an SQL query or adding and index to the database, changing an xsl stylesheet if a transformation is slow or perhaps even switching on intra-container messaging (in the unlikely event that the JMS transport is not fast enough).

Posted by Admin on 24-Feb-2009 05:46

Thanks Jamie, This is good you suggested. I look at Tracking . I made tracking off becouse I thought it may affect my performance.

Thanks

Posted by jtownsen on 24-Feb-2009 10:59

Oh, you're right, switching on tracking will reduce performance, but it will be a fairly constant reduction for the tracking message sent. As such, it can still provide a good indication of which step are the slowest.

Note that there are different levels of tracking. You probably only need to know when a message enters & exits a service, not the complete message details.

Posted by Admin on 24-Feb-2009 11:05

If you set tracking to level 2, it will still give you time of each step, but not affect performance that much.

Posted by Admin on 04-Mar-2009 03:45

There is no significant change in performance .

I took 7 steps in process in which 4 are transformation services without stylesheet file and 3 are custom java services . still it takes more than 1 second to come from first entry point to last exit point of process.

I am currently using evaluation version.

Is there major difference between evaluation version and production version of sonic esb performance-wise ?

please do reply.

Thanks.

This thread is closed