You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Yong J <jy...@gmail.com> on 2008/07/21 23:57:30 UTC

ServiceMix/ServiceMix-JMS performance problem

Hi,

We did some performance tests on Servicemix-jms BC, and found it
performs poorly.  We use Servicemix version 3.2.1.  Tests run on two
Ubuntu v 8.04 boxes (HP ProLiant DL140 G3 Servers). We have the test
setting below:

Data Generator  -> data.telemetry.in -> data.telemetry.out -> Data Reflector
Data Receiver    <- command.out     <-  command.in             <--|

The data generator and data receiver are java objects reside in the
same JVM v1.6 (different threads).  The generator generates and sends
different sized messages at various rates, and the receiver aggregates
and computes the average round trip time.  Data.telemetry.in(out) and
command.in(out) are queues in a single remote Servicemix instance, and
Servicemix-jms BC is responsible to transport messages from consumers
(in queues) to providers (out queues).  The data reflector is a java
object resides on the same physical machine as the Servicemix
instance, and it basically routes messages from data.telemetry.out to
command.in.  To compare Servicemix-jms' performance, we use the
Servicemix's (the same Servicemix instance) internal Activemq and
setup the baseline as below

Data Generator  -> data.telemetry -> Data Reflector
Data Receiver    <- command           <--|

In the baseline case, the JMS BC is not used.  Instead, the data
reflector/receiver read message directly from the queues.

And we got the result below:

Avg = 1000-10000
Size  JMS-1000     JMS-500      JMS-250      JMS-100      SM-1000
SM-500       SM-250       SM-100
4096  10.99355873  1.992798541  1.846196511  1.858529907  38.13672252
15.99289634  12.87034476  28.77400334
1024  1.871724364  1.0014821    1.061549684  1.075310164  124530.201
117993.9008  78.64173833  62.60961545
512   1.289635009  0.895815389  0.853104379  0.880207007  100581.0333
624.7655428  103.8424667  77.8392499
256   21.68340657  1.101478901  1.060026675  0.939207598  70612.14396
87665.68287  3.573813645  1.753960887
128   1.570891884  0.643154019  0.717291628  0.818023884  129145.2986
89747.2953   231.6068274  2.026899381

We generated 10,000 messages.  We removed the first 1,000 to avoid
transient effects.  The size column represents the message size in
bytes.  JMS represents Activemq, and SM is Servicemix-jms.  For JMS-X
or MS-X, the X represents the number of messages per second, for
example, JMS-250 mean test uses Activemq and generator sends 250
message per second.  The cell numbers are message round trip time in
milliseconds.  As you can see from the result, Servicemix-jms seems to
perform poorly (horrible when send rate is above 250) compare the pure
Activemq. When we charted and looked at the raw result data, we also
found a lot of Sawtooth shapes, and we suspected some sort of
buffering was hindering Servicemix performance.  Can you please give
me some pointers on how to improve Servicemix/Servicemix-jms
performance.  I attached the service assemblies used in the test.
Thanks in advance.

Yong Jin