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