Hi Rob.

 

I don’t understand why you said that an average of 300 samples is small. I am measuring the time spent for a JBI message inside ServiceMix JVM.  At this stage I am not trying to measure the queue effect or other overall performance issues. I’m using MessageExchangeListener interface and according with  servicemix.org/Component+helper+classes: “The ServiceMix container will detect the use of this interface and be able to perform immediate dispatch (rather than the default JBI asynchronous dispatch model where a thread is used per JBI component)”. Notice the phrase: “immediate dispatch”.

 

Anyway, I repeated the test with 4000 samples (first 100 are discarded). The average time spent to send a trivial short message between 2 components inside ServiceMix was: 56.820 miliseconds.

 

Under the same conditions, I tested and measured the time spent by Hessian messages over HTTP between 2 components running in different JVM and I got an average time of:  0.512 miliseconds.

 

RESULTS: ServiceMix/JBI is around 110 times slower than Hessian over HTTP for messages marshalling and transport. I guess that results would be even worse if I try to send messages between 2 instances of ServiceMix (2 JVM).

 

I think that my hardware characteristics are not important because I am just comparing technologies (transport/protocol) under the same hardware/software conditions. However, this is the Microsoft System Information report on my pc:

 

OS Name        Microsoft Windows XP Professional

Version            5.1.2600 Service Pack 2 Build 2600

System Manufacturer  Hewlett-Packard

System Model HP Compaq nx6120 (PV135PA#ABG)

Processor         x86 Family 6 Model 13 Stepping 8 GenuineIntel ~1733 Mhz

BIOS Version/Date    Hewlett-Packard 68DTD Ver. F.03, 2/25/2005

SMBIOS Version       2.3

Hardware Abstraction Layer  Version = "5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)"

Total Physical Memory           1,024.00 MB

Available Physical Memory    428.15 MB

Total Virtual Memory 2.00 GB

Available Virtual Memory      1.96 GB

Page File Space           1.64 GB

 

The performance price is too high, and I will be forced to abandon ServiceMix. I wonder whether JBI is too heavy not matter the implementation. Messages between components running in the same container (JVM) should be communicated instantaneously (probably JBI specification should be relaxed for communication between components inside the same virtual machine).

 

Best regards,

Cesar

 


From: Rob Davies [mailto:[EMAIL PROTECTED]
Sent: Monday, September 12, 2005 7:27 PM
To: [email protected]
Subject: Re: [servicemix-user] ServiceMix/JBI poor performance!

 

 

Hi Cesar,

 

it would be great if you could submit your benchmark to ServiceMix! We are in the process of adding benchmark system tests - but this will take a while - and it would help us tune the internals in the mean time.

 

You're sample size (300) is quite small to get an accurate picture of the marshaling/routing speed of ServiceMix, and you've probably not getting a true picture of the overhead of sending messages through JBI. 

Internally for routing the default flow type is seda, which uses internal queues for dispatching messages between different Components. The queue size by default is 1000, so a bigger sample size will provide a more accurate picture of the overhead.

 

Seda flow does provide some benefits for scaling with some deployment patterns - but you could try setting the flow used to straight through - st. See http://servicemix.codehaus.org/NMR+Flows

 

You can change the flow type when configuring ServiceMix - see http://servicemix.codehaus.org/Configuration

 

cheers,

 

Rob

 

Reply via email to