The patch was applied so I suppose it will be part of the next release.
Sebastien.
Vy Ho wrote:
What's the status of this? This would be really nice if it's incorporated into the next release candidate of Axis.
On Mon, 06 Dec 2004 16:40:34 +0100, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Hi,
While doing performance tests on deserialization, I noticed that Axis scales very poorly when increasing the number of threads.
Here are the figures: 5 threads, 1000 messages: 15 seconds 10 threads, 1000 messages: 56 seconds 15 threads, 1000 messages: 93 seconds
The root of the problem is in XMLUtils. Each time a node is created via the static fuction newDocument(...), there are two functions, getDocumentBuilder() and realeaseDocumentBuilder(), called which both peform synchronisation over a pool of document builders (documentBuilders ). Since XML documents contain many nodes and there are at least two synchronization points in the code per node created, I let you imagine the overhead suffered when more threads come into play.
I was able to achieve a significant performance boost by replacing the
pool of DocumentBuilders (documentBuilders) by a single document builder
stored in a ThreadLocal variable. This was already suggested a while ago
in this mailing list (see "Performance Issues with AXIS & Axis Response
time appears linear with load").
The results of my benchmark with the changes brought to the code are shown below.
5 threads, 1000 messages: 13seconds 10 threads, 1000 messages: 25,5 seconds 15 threads, 1000 messages: 37 seconds
As you can see, deserialization time scales now linearly with the number
of threads which is a lot better. I placed the code in attachment. Could
you include sth equivalent in the next release of the Axis.
Thanks, Sebastien
