axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject Re: axis performance in multithreading env
Date Mon, 10 Jan 2005 11:14:14 GMT
The benchmark I ran does not require any client or server, and focuses 
purely on serialization and deserialization without unnecessary overhead 
(network, server, ...). What I used extensively are the 
DeserializationContext and SerializationContext classes and applied 
respectively their parse() and serialize() methods directly to the 
classes generated by wsdl2java. So mostly pure performance of bean and 
array serializers and deserializers have been measured in the benchmark.

Multithreading has been implemented using a thread that is doing 
repeatedly serialization and deserialization, as explained above, of a 
WSDL generated object/class, a number of times (1000), in a while loop. 
The benchmark time is the lapse of time between the time I start 
concurrentltly those threads in a pool of say 5, 10 or 15 threads, and 
the time I wait for all of those threads to be finished.

If you look at how the patch modifies, it is very strange 
that you do not see much difference in your benchmark. The need for 
synchronized blocks in getDocumentBuilder() and releaseDocumentBuilder() 
has been removed, and those methods are called *each time* a new XML 
node is created via newDocument() when a SOAP envelope is parsed, so 
many, many times. You'll see that if you run a profiler on the code.

In your benchmark, it is your server that is the bottleneck, so you must 
make sure that your server:
1) is upgraded with the axis library built with the patch.
2) is stressed enough by your client so that it must run multiple 
threads concurrently to serve the client requests.

To make sure you are running with the patched code, you can build the 
axis library yourself (this is peanuts with the ant build task).


Vy Ho wrote:

> I tried the nightly build, but I didn't notice any difference.  When 
> you said multi-thread, what did you mean by that?  Do you have 
> multiple threads workin on the clients using a same Call object?  Do 
> you mean multi-thread on the server?
> I have an Axis client with mutliple threads.  Each thread creates its 
> own locator interface, and repeatedly send requests to the server 
> using the same stub returned from the locator.  I see no significant 
> difference between the patch.  Both do not scale as linear as your 
> numbers for the patched version, but not as worse as your number as 
> the pre-patched version.  Performance goes slight down with the patch, 
> but not significant either.
> Again, could you please tell me how was your set up of your test.
> For sanity check, I download the binary at:
> Notice that the binary is stilled label as 1_2RC2, I wonder if this 
> one has the patched or not.  Looking at the current source code, it 
> looks like your patch is implemented.

View raw message