|
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] 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 |
- [servicemix-user] ServiceMix/JBI poor performance! Cesar Delgado
- Re: [servicemix-user] ServiceMix/JBI poor performance... Rob Davies
- RE: [servicemix-user] ServiceMix/JBI poor perform... Cesar Delgado
- Re: [servicemix-user] ServiceMix/JBI poor per... Guillaume Nodet
- Re: [servicemix-user] ServiceMix/JBI poor per... Guillaume Nodet
