You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by ti...@calidris.force9.co.uk on 2003/03/05 18:46:47 UTC
Performance
I'm seeing dreadful performance using Axis with multiple concurrent calls.
I have a simple test app which runs some PL/SQL. In single user mode, it works quickly across an Axis call (Axis on both client and server), taking about a second to complete.
I've ramped up the app and have 10 concurrent threads doing the same call. The PL/SQL is now taking between 140ms and 1372ms, which is fair enough, and the actual call after the Axis bit (ie inside the method that is exposed using Axis) varies between 2173ms and 2424ms.
These figures I can live with, and I'm sure there are further optimizations I can put into my architecture to reduce this time.
However, the total call time varies between 7331ms and 10445ms. I appear to be losing between 5 and 8 seconds simply doing Axis comms.
Anyone got any tips on how to speed this up, or ideas of why it's so bad?
Axis 1.1rc1, JBoss 3.0.4 app server, jdk 1.4.0, windows NT.
Tim.
Re: Performance
Posted by James Black <jb...@ieee.org>.
IvanLatysh wrote:
>To improve performance you can use
><parameter name="scope" value="application"/>
>
>This service will be created once and will serve all requests, but you should handle yourself concurent requests.
>
I am using the webservice to handle requests from about 500 clients,
and I am wondering if what you are saying is correct. If I used the
application scope then if I handle the concurrency issue this should
work well?
Is there any examples of such a web service that can be examined?
>
>
Re: Performance
Posted by Tim Sawyer <ti...@calidris.force9.co.uk>.
Thanks for everyone's comments.
On Wed, 2003-03-05 at 18:00, IvanLatysh wrote:
> To improve performance you can use
> <parameter name="scope" value="application"/>
Good plan, but I'm already using application scope.
What I hadn't considered is upping the number of axis servlets
available, might try that tomorrow. Or does that just increase by
itself anyway?
I hadn't considered pooling the client side call objects, but I'm
already pooling business objects on the server side.
Tim.
Re: Performance
Posted by IvanLatysh <iv...@yourmail.com>.
Hello, tim@calidris.force9.co.uk!
You wrote to <ax...@ws.apache.org> on 5 Mar 2003 17:46:47 -0000:
t> However, the total call time varies between 7331ms and 10445ms. I
t> appear to be losing between 5 and 8 seconds simply doing Axis comms.
t> Anyone got any tips on how to speed this up, or ideas of why it's so
t> bad?
I assume that you are using service with a scope of request.
Your service object is creating each time, when request is received.
Just add a log in your class constructor and finalize() method and you will see.
To improve performance you can use
<parameter name="scope" value="application"/>
This service will be created once and will serve all requests, but you should handle yourself concurent requests.
There are one more way - scope session. But I don't know what are you doing.
---
Yours sincerely, Ivan Latysh.
Ivan[a]yourmail.com
Re: Performance
Posted by Frank Cohen <fc...@pushtotest.com>.
I've seen similar concurrency problems in Axis while I was doing a
performance project for a customer. This was last Summer when Axis was
still very, very new. I haven't had a chance to dig into the code but I
suspect there is a problem with the way Axis handles threads and
globals.
If you need to compare Axis performance to other SOAP implementations
then take a look at my open-source performance kits at:
http://www.pushtotest.com/ptt/kits/index.html
-Frank
--
Frank Cohen, Founder, PushToTest, http://www.PushToTest.com, phone: 408
374 7426
Come to PushToTest for free open-source test automation solutions that
test and monitor
Web-enabled applications, especially Web Services for scalability and
reliability.
On Wednesday, March 5, 2003, at 09:46 AM, tim@calidris.force9.co.uk
wrote:
>
> I'm seeing dreadful performance using Axis with multiple concurrent
> calls.
>
> I have a simple test app which runs some PL/SQL. In single user mode,
> it works quickly across an Axis call (Axis on both client and server),
> taking about a second to complete.
>
> I've ramped up the app and have 10 concurrent threads doing the same
> call. The PL/SQL is now taking between 140ms and 1372ms, which is
> fair enough, and the actual call after the Axis bit (ie inside the
> method that is exposed using Axis) varies between 2173ms and 2424ms.
>
> These figures I can live with, and I'm sure there are further
> optimizations I can put into my architecture to reduce this time.
>
> However, the total call time varies between 7331ms and 10445ms. I
> appear to be losing between 5 and 8 seconds simply doing Axis comms.
>
> Anyone got any tips on how to speed this up, or ideas of why it's so
> bad?
>
> Axis 1.1rc1, JBoss 3.0.4 app server, jdk 1.4.0, windows NT.
>
> Tim.
>
>