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 T W <wo...@gmail.com> on 2007/05/02 09:37:42 UTC

Axis2 performance and listener process construction

Hi, we're fairly new to Axis2 in general but lately we've been writing a
small web service to test the Sandesha2 WS-RM stack with Axis2. We have
however two questions:

1. Is it normal that it takes about 15 seconds to make 10 synchronous
requests? We are just calling a simple Web service operation which takes 3
integers as input parameters and returns an integer so the payload is never
large. We have even looked at the requests and responses being sent/received
on the wire and there is nothing out of the ordinary. To send our messages
we're calling the sendReceive() method on the ServiceClient interface. The
test is running locally (both sender and receiver) on a modern laptop (
1.6ghz mobile). No special configuration of Axis2 has been done (besides
Sandesha2, but even before adding that it was just as slow).

2. Could anyone explain why when using a listener as a reponse channel this
appears to be a seperate process? Is the process shared by multiple clients?
And why did the developers not opt for a thread instead? When a request is
made from the client side, does it also pass through the listening process
(we're guessing no, as the listener is optional)? Does this have anything to
do with reusing the same socket as a response channel for multiple clients?

Those are just some of the things we've noticed, if someone could clarify
this a little it would help us alot.

Thanks,
Toon

Re: Axis2 performance and listener process construction

Posted by Sanjiva Weerawarana <sa...@opensource.lk>.
Perhaps I can help .. on a Linux box multiple Java threads sometimes get 
listed as different processes using "ps". Are you on a Linux box?

We do NOT create multiple processes for anything .. so what you're 
observing is some weird reporting of the threads in the system.

Now that doesn't give any explanation for why your second listener isn't 
gracefully going away after the interactions are over; it is most 
certainly supposed to!

Sanjiva.

Paul Fremantle wrote:
> Toon
> 
> Two things:
> 
> 1) you can modify the default Sandesha timing parameters by editing
> the module.xml inside META-INF in sandesha2.mar. The default timing
> parameters are:
> RetransmissionInterval 6s (6000ms)
> InactivityTimeout 60s
> 
> 2) When you do setUseSeparateListener, Axis2 does not spawn a new
> process. It spawns a thread. So I'm still confused as to what is going
> on!.
> 
> Paul
> 
> 
>> On Wed, 2007-05-02 at 13:34 +0200, Toon Wouters wrote:
>> > Paul
>> >
>> > Thanks for your reply. You're right about the timing, seems there was
>> > a communication problem with my colleague, my appologies. I just tried
>> > it without Sandesha and it is indeed quite fast.
>> >
>> > To get back to the listener question what I mean is the seperate
>> > listener logic which comes with Axis2 to provide a seperate transport
>> > channel back from the server to the client to receive responses on (so
>> > you can receive asynchronous responses at any time for example). The
>> > listener process listens on port 6060 by default. The code to enable
>> > the seperate transport channel in java is:
>> >
>> > clientOptions.setUseSeparateListener(true);
>> >
>> > After which we set the options for our ServiceClient instance. Hopes
>> > this clarifies it.
>> > The reason i'm asking about this is because we're having some
>> > cleanup/rebinding issues with this process. Often when the client
>> > exits the listener process keeps running en suddenly goes berserk
>> > consuming all cpu time. This shows in windows task manager as a
>> > seperate java process.
>> >
>> > Toon
>> >
>> > On 5/2/07, Paul Fremantle <pz...@gmail.com> wrote:
>> >         Toon
>> >
>> >         I'm surprised you are getting those results. The Sandesha2
>> >         code isn't
>> >         tuned and the timing parameters are not optimized for fast
>> >         exchange,
>> >         but without Sandesha2 the Axis2 calls should take about 100ms
>> >         for 10
>> >         calls.
>> >
>> >         Do you have some sample code I can try?
>> >
>> >         Also I don't understand the comment about a separate process.
>> >         As far
>> >         as I know Axis2 and Sandesha never start new processes. Can
>> >         you give
>> >         us more details please?
>> >
>> >         Paul
>> >
>> >
>> >
>> >         On 5/2/07, T W <wo...@gmail.com> wrote:
>> >         > Hi, we're fairly new to Axis2 in general but lately we've
>> >         been writing a
>> >         > small web service to test the Sandesha2 WS-RM stack with
>> >         Axis2. We have
>> >         > however two questions:
>> >         >
>> >         > 1. Is it normal that it takes about 15 seconds to make 10
>> >         synchronous
>> >         > requests? We are just calling a simple Web service operation
>> >         which takes 3
>> >         > integers as input parameters and returns an integer so the
>> >         payload is never
>> >         > large. We have even looked at the requests and responses
>> >         being sent/received
>> >         > on the wire and there is nothing out of the ordinary. To
>> >         send our messages
>> >         > we're calling the sendReceive() method on the ServiceClient
>> >         interface. The
>> >         > test is running locally (both sender and receiver) on a
>> >         modern laptop (
>> >         > 1.6ghz mobile). No special configuration of Axis2 has been
>> >         done (besides
>> >         > Sandesha2, but even before adding that it was just as
>> >         slow).
>> >         >
>> >         > 2. Could anyone explain why when using a listener as a
>> >         reponse channel this
>> >         > appears to be a seperate process? Is the process shared by
>> >         multiple clients?
>> >         > And why did the developers not opt for a thread instead?
>> >         When a request is
>> >         > made from the client side, does it also pass through the
>> >         listening process
>> >         > (we're guessing no, as the listener is optional)? Does this
>> >         have anything to
>> >         > do with reusing the same socket as a response channel for
>> >         multiple clients?
>> >         >
>> >         > Those are just some of the things we've noticed, if someone
>> >         could clarify
>> >         > this a little it would help us alot.
>> >         >
>> >         > Thanks,
>> >         > Toon
>> >         >
>> >
>> >
>> >         --
>> >         Paul Fremantle
>> >         VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
>> >
>> >         http://bloglines.com/blog/paulfremantle
>> >         paul@wso2.com
>> >
>> >         "Oxygenating the Web Service Platform", www.wso2.com
>> >
>> >         
>> ---------------------------------------------------------------------
>> >         To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> >         For additional commands, e-mail: axis-user-help@ws.apache.org
>> >
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>
>>
> 
> 

-- 
Sanjiva Weerawarana, Ph.D.
Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
Director; Open Source Initiative; http://www.opensource.org/
Member; Apache Software Foundation; http://www.apache.org/
Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2 performance and listener process construction

Posted by Paul Fremantle <pz...@gmail.com>.
Toon

Two things:

1) you can modify the default Sandesha timing parameters by editing
the module.xml inside META-INF in sandesha2.mar. The default timing
parameters are:
RetransmissionInterval 6s (6000ms)
InactivityTimeout 60s

2) When you do setUseSeparateListener, Axis2 does not spawn a new
process. It spawns a thread. So I'm still confused as to what is going
on!.

Paul


> On Wed, 2007-05-02 at 13:34 +0200, Toon Wouters wrote:
> > Paul
> >
> > Thanks for your reply. You're right about the timing, seems there was
> > a communication problem with my colleague, my appologies. I just tried
> > it without Sandesha and it is indeed quite fast.
> >
> > To get back to the listener question what I mean is the seperate
> > listener logic which comes with Axis2 to provide a seperate transport
> > channel back from the server to the client to receive responses on (so
> > you can receive asynchronous responses at any time for example). The
> > listener process listens on port 6060 by default. The code to enable
> > the seperate transport channel in java is:
> >
> > clientOptions.setUseSeparateListener(true);
> >
> > After which we set the options for our ServiceClient instance. Hopes
> > this clarifies it.
> > The reason i'm asking about this is because we're having some
> > cleanup/rebinding issues with this process. Often when the client
> > exits the listener process keeps running en suddenly goes berserk
> > consuming all cpu time. This shows in windows task manager as a
> > seperate java process.
> >
> > Toon
> >
> > On 5/2/07, Paul Fremantle <pz...@gmail.com> wrote:
> >         Toon
> >
> >         I'm surprised you are getting those results. The Sandesha2
> >         code isn't
> >         tuned and the timing parameters are not optimized for fast
> >         exchange,
> >         but without Sandesha2 the Axis2 calls should take about 100ms
> >         for 10
> >         calls.
> >
> >         Do you have some sample code I can try?
> >
> >         Also I don't understand the comment about a separate process.
> >         As far
> >         as I know Axis2 and Sandesha never start new processes. Can
> >         you give
> >         us more details please?
> >
> >         Paul
> >
> >
> >
> >         On 5/2/07, T W <wo...@gmail.com> wrote:
> >         > Hi, we're fairly new to Axis2 in general but lately we've
> >         been writing a
> >         > small web service to test the Sandesha2 WS-RM stack with
> >         Axis2. We have
> >         > however two questions:
> >         >
> >         > 1. Is it normal that it takes about 15 seconds to make 10
> >         synchronous
> >         > requests? We are just calling a simple Web service operation
> >         which takes 3
> >         > integers as input parameters and returns an integer so the
> >         payload is never
> >         > large. We have even looked at the requests and responses
> >         being sent/received
> >         > on the wire and there is nothing out of the ordinary. To
> >         send our messages
> >         > we're calling the sendReceive() method on the ServiceClient
> >         interface. The
> >         > test is running locally (both sender and receiver) on a
> >         modern laptop (
> >         > 1.6ghz mobile). No special configuration of Axis2 has been
> >         done (besides
> >         > Sandesha2, but even before adding that it was just as
> >         slow).
> >         >
> >         > 2. Could anyone explain why when using a listener as a
> >         reponse channel this
> >         > appears to be a seperate process? Is the process shared by
> >         multiple clients?
> >         > And why did the developers not opt for a thread instead?
> >         When a request is
> >         > made from the client side, does it also pass through the
> >         listening process
> >         > (we're guessing no, as the listener is optional)? Does this
> >         have anything to
> >         > do with reusing the same socket as a response channel for
> >         multiple clients?
> >         >
> >         > Those are just some of the things we've noticed, if someone
> >         could clarify
> >         > this a little it would help us alot.
> >         >
> >         > Thanks,
> >         > Toon
> >         >
> >
> >
> >         --
> >         Paul Fremantle
> >         VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
> >
> >         http://bloglines.com/blog/paulfremantle
> >         paul@wso2.com
> >
> >         "Oxygenating the Web Service Platform", www.wso2.com
> >
> >         ---------------------------------------------------------------------
> >         To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> >         For additional commands, e-mail: axis-user-help@ws.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Paul Fremantle
VP/Technology, WSO2 and OASIS WS-RX TC Co-chair

http://bloglines.com/blog/paulfremantle
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2 performance and listener process construction

Posted by Michele Mazzucco <Mi...@ncl.ac.uk>.
Toon,

as you said the listener uses port 6060 by default, but by providing a
custom configuration context you can change. Furthermore, you can use
the same configuration context across different ServiceClient(s) or even
use the same ServiceClient across different invocations.

Michele

On Wed, 2007-05-02 at 13:34 +0200, Toon Wouters wrote:
> Paul
> 
> Thanks for your reply. You're right about the timing, seems there was
> a communication problem with my colleague, my appologies. I just tried
> it without Sandesha and it is indeed quite fast.
> 
> To get back to the listener question what I mean is the seperate
> listener logic which comes with Axis2 to provide a seperate transport
> channel back from the server to the client to receive responses on (so
> you can receive asynchronous responses at any time for example). The
> listener process listens on port 6060 by default. The code to enable
> the seperate transport channel in java is: 
> 
> clientOptions.setUseSeparateListener(true);
> 
> After which we set the options for our ServiceClient instance. Hopes
> this clarifies it.
> The reason i'm asking about this is because we're having some
> cleanup/rebinding issues with this process. Often when the client
> exits the listener process keeps running en suddenly goes berserk
> consuming all cpu time. This shows in windows task manager as a
> seperate java process. 
> 
> Toon
> 
> On 5/2/07, Paul Fremantle <pz...@gmail.com> wrote:
>         Toon
>         
>         I'm surprised you are getting those results. The Sandesha2
>         code isn't
>         tuned and the timing parameters are not optimized for fast
>         exchange,
>         but without Sandesha2 the Axis2 calls should take about 100ms
>         for 10 
>         calls.
>         
>         Do you have some sample code I can try?
>         
>         Also I don't understand the comment about a separate process.
>         As far
>         as I know Axis2 and Sandesha never start new processes. Can
>         you give
>         us more details please? 
>         
>         Paul
>         
>         
>         
>         On 5/2/07, T W <wo...@gmail.com> wrote:
>         > Hi, we're fairly new to Axis2 in general but lately we've
>         been writing a
>         > small web service to test the Sandesha2 WS-RM stack with
>         Axis2. We have 
>         > however two questions:
>         >
>         > 1. Is it normal that it takes about 15 seconds to make 10
>         synchronous
>         > requests? We are just calling a simple Web service operation
>         which takes 3
>         > integers as input parameters and returns an integer so the
>         payload is never 
>         > large. We have even looked at the requests and responses
>         being sent/received
>         > on the wire and there is nothing out of the ordinary. To
>         send our messages
>         > we're calling the sendReceive() method on the ServiceClient
>         interface. The 
>         > test is running locally (both sender and receiver) on a
>         modern laptop (
>         > 1.6ghz mobile). No special configuration of Axis2 has been
>         done (besides
>         > Sandesha2, but even before adding that it was just as
>         slow). 
>         >
>         > 2. Could anyone explain why when using a listener as a
>         reponse channel this
>         > appears to be a seperate process? Is the process shared by
>         multiple clients?
>         > And why did the developers not opt for a thread instead?
>         When a request is 
>         > made from the client side, does it also pass through the
>         listening process
>         > (we're guessing no, as the listener is optional)? Does this
>         have anything to
>         > do with reusing the same socket as a response channel for
>         multiple clients? 
>         >
>         > Those are just some of the things we've noticed, if someone
>         could clarify
>         > this a little it would help us alot.
>         >
>         > Thanks,
>         > Toon
>         >
>         
>         
>         --
>         Paul Fremantle
>         VP/Technology, WSO2 and OASIS WS-RX TC Co-chair 
>         
>         http://bloglines.com/blog/paulfremantle
>         paul@wso2.com
>         
>         "Oxygenating the Web Service Platform", www.wso2.com
>         
>         ---------------------------------------------------------------------
>         To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>         For additional commands, e-mail: axis-user-help@ws.apache.org
>         
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2 performance and listener process construction

Posted by Toon Wouters <wo...@gmail.com>.
Paul

Thanks for your reply. You're right about the timing, seems there was a
communication problem with my colleague, my appologies. I just tried it
without Sandesha and it is indeed quite fast.

To get back to the listener question what I mean is the seperate listener
logic which comes with Axis2 to provide a seperate transport channel back
from the server to the client to receive responses on (so you can receive
asynchronous responses at any time for example). The listener process
listens on port 6060 by default. The code to enable the seperate transport
channel in java is:

clientOptions.setUseSeparateListener(true);

After which we set the options for our ServiceClient instance. Hopes this
clarifies it.
The reason i'm asking about this is because we're having some
cleanup/rebinding issues with this process. Often when the client exits the
listener process keeps running en suddenly goes berserk consuming all cpu
time. This shows in windows task manager as a seperate java process.

Toon

On 5/2/07, Paul Fremantle <pz...@gmail.com> wrote:
>
> Toon
>
> I'm surprised you are getting those results. The Sandesha2 code isn't
> tuned and the timing parameters are not optimized for fast exchange,
> but without Sandesha2 the Axis2 calls should take about 100ms for 10
> calls.
>
> Do you have some sample code I can try?
>
> Also I don't understand the comment about a separate process. As far
> as I know Axis2 and Sandesha never start new processes. Can you give
> us more details please?
>
> Paul
>
>
>
> On 5/2/07, T W <wo...@gmail.com> wrote:
> > Hi, we're fairly new to Axis2 in general but lately we've been writing a
> > small web service to test the Sandesha2 WS-RM stack with Axis2. We have
> > however two questions:
> >
> > 1. Is it normal that it takes about 15 seconds to make 10 synchronous
> > requests? We are just calling a simple Web service operation which takes
> 3
> > integers as input parameters and returns an integer so the payload is
> never
> > large. We have even looked at the requests and responses being
> sent/received
> > on the wire and there is nothing out of the ordinary. To send our
> messages
> > we're calling the sendReceive() method on the ServiceClient interface.
> The
> > test is running locally (both sender and receiver) on a modern laptop (
> > 1.6ghz mobile). No special configuration of Axis2 has been done (besides
> > Sandesha2, but even before adding that it was just as slow).
> >
> > 2. Could anyone explain why when using a listener as a reponse channel
> this
> > appears to be a seperate process? Is the process shared by multiple
> clients?
> > And why did the developers not opt for a thread instead? When a request
> is
> > made from the client side, does it also pass through the listening
> process
> > (we're guessing no, as the listener is optional)? Does this have
> anything to
> > do with reusing the same socket as a response channel for multiple
> clients?
> >
> > Those are just some of the things we've noticed, if someone could
> clarify
> > this a little it would help us alot.
> >
> > Thanks,
> > Toon
> >
>
>
> --
> Paul Fremantle
> VP/Technology, WSO2 and OASIS WS-RX TC Co-chair
>
> http://bloglines.com/blog/paulfremantle
> paul@wso2.com
>
> "Oxygenating the Web Service Platform", www.wso2.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>

Re: Axis2 performance and listener process construction

Posted by Paul Fremantle <pz...@gmail.com>.
Toon

I'm surprised you are getting those results. The Sandesha2 code isn't
tuned and the timing parameters are not optimized for fast exchange,
but without Sandesha2 the Axis2 calls should take about 100ms for 10
calls.

Do you have some sample code I can try?

Also I don't understand the comment about a separate process. As far
as I know Axis2 and Sandesha never start new processes. Can you give
us more details please?

Paul



On 5/2/07, T W <wo...@gmail.com> wrote:
> Hi, we're fairly new to Axis2 in general but lately we've been writing a
> small web service to test the Sandesha2 WS-RM stack with Axis2. We have
> however two questions:
>
> 1. Is it normal that it takes about 15 seconds to make 10 synchronous
> requests? We are just calling a simple Web service operation which takes 3
> integers as input parameters and returns an integer so the payload is never
> large. We have even looked at the requests and responses being sent/received
> on the wire and there is nothing out of the ordinary. To send our messages
> we're calling the sendReceive() method on the ServiceClient interface. The
> test is running locally (both sender and receiver) on a modern laptop (
> 1.6ghz mobile). No special configuration of Axis2 has been done (besides
> Sandesha2, but even before adding that it was just as slow).
>
> 2. Could anyone explain why when using a listener as a reponse channel this
> appears to be a seperate process? Is the process shared by multiple clients?
> And why did the developers not opt for a thread instead? When a request is
> made from the client side, does it also pass through the listening process
> (we're guessing no, as the listener is optional)? Does this have anything to
> do with reusing the same socket as a response channel for multiple clients?
>
> Those are just some of the things we've noticed, if someone could clarify
> this a little it would help us alot.
>
> Thanks,
> Toon
>


-- 
Paul Fremantle
VP/Technology, WSO2 and OASIS WS-RX TC Co-chair

http://bloglines.com/blog/paulfremantle
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org