You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by bsolrac <ca...@axa-canada.com> on 2008/07/26 00:37:45 UTC

weird performance issue

setup


servicemix version: 3.1.2 web app
application server: JBoss 4.2.2

We have a web service deployed on jboss instance A
We have service mix deployed on jboss instance b

Jboss A is on server A
Jboss B is also on server A 

Scenario

1. Application sends xml (in/out mep) over http/soap to servicemix
2. ServiceMix checks content via EIP ContentBasedRoutingRule
3. Routes the xml to HTTP JBI component
4. HTTP JBI component sends xml over HTTP/SOAP to web service
5. Web service returns output
6. servicemix returns output

Service mix Configuration


flow=seda

&lt;sm:executorFactory&gt;
&lt;bean
class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl"&gt; 
&lt;property name="defaultConfig"&gt; 
&lt;bean class="org.apache.servicemix.executors.impl.ExecutorConfig"&gt; 
&lt;property name="corePoolSize" value="180"/&gt;
&lt;property name="maximumPoolSize" value="-1"/&gt; 
&lt;property name="queueSize" value="1024"/&gt;
&lt;property name="keepAliveTime" value="180000"/&gt;  
&lt;/bean&gt; 
&lt;/property&gt; 
&lt;/bean&gt; 
&lt;/sm:executorFactory&gt;

Issue


We are recieving 50 concurrent requests in service mix but service mix is
only sending a maximum of 15 concurrent requests to the web service.

Any clue where the issue is ? 

We are going to try switching flow type to st instead of seda.
-- 
View this message in context: http://www.nabble.com/weird-performance-issue-tp18660765p18660765.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Re: weird performance issue

Posted by bsolrac <ca...@axa-canada.com>.


bsolrac wrote:
> 
> 
> 
> Ulhas Bhole wrote:
>> 
>> bsolrac wrote:
>>> bsnyder wrote:
>>>   
>>>> On Fri, Jul 25, 2008 at 4:37 PM, bsolrac
>>>> <ca...@axa-canada.com>
>>>> wrote:
>>>>     
>>>>> setup
>>>>>
>>>>>
>>>>> servicemix version: 3.1.2 web app
>>>>> application server: JBoss 4.2.2
>>>>>
>>>>> We have a web service deployed on jboss instance A
>>>>> We have service mix deployed on jboss instance b
>>>>>
>>>>> Jboss A is on server A
>>>>> Jboss B is also on server A
>>>>>
>>>>> Scenario
>>>>>
>>>>> 1. Application sends xml (in/out mep) over http/soap to servicemix
>>>>> 2. ServiceMix checks content via EIP ContentBasedRoutingRule
>>>>> 3. Routes the xml to HTTP JBI component
>>>>> 4. HTTP JBI component sends xml over HTTP/SOAP to web service
>>>>> 5. Web service returns output
>>>>> 6. servicemix returns output
>>>>>
>>>>> Service mix Configuration
>>>>>
>>>>>
>>>>> flow=seda
>>>>>
>>>>> &lt;sm:executorFactory&gt;
>>>>> &lt;bean
>>>>> class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl"&gt;
>>>>> &lt;property name="defaultConfig"&gt;
>>>>> &lt;bean
>>>>> class="org.apache.servicemix.executors.impl.ExecutorConfig"&gt;
>>>>> &lt;property name="corePoolSize" value="180"/&gt;
>>>>> &lt;property name="maximumPoolSize" value="-1"/&gt;
>>>>> &lt;property name="queueSize" value="1024"/&gt;
>>>>> &lt;property name="keepAliveTime" value="180000"/&gt;
>>>>> &lt;/bean&gt;
>>>>> &lt;/property&gt;
>>>>> &lt;/bean&gt;
>>>>> &lt;/sm:executorFactory&gt;
>>>>>
>>>>> Issue
>>>>>
>>>>>
>>>>> We are recieving 50 concurrent requests in service mix but service mix
>>>>> is
>>>>> only sending a maximum of 15 concurrent requests to the web service.
>>>>>
>>>>> Any clue where the issue is ?
>>>>>
>>>>> We are going to try switching flow type to st instead of seda.
>>>>>       
>>>> Have you tried adjusting the thread pools yet?
>>>>
>>>> http://servicemix.apache.org/thread-pools.html
>>>>
>>>> There's also some additional explanation that I provided on the thread
>>>> pool executor on the mailing list that is available here:
>>>>
>>>> http://markmail.org/search/?q=servicemix+executor+bruce#query:servicemix%20executor%20bruce+page:1+mid:sxwofyw5r3s3627b+state:results
>>>>
>>>> Bruce
>>>> -- 
>>>> perl -e 'print
>>>> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
>>>> );'
>>>>
>>>> Apache ActiveMQ - http://activemq.org/
>>>> Apache Camel - http://activemq.org/camel/
>>>> Apache ServiceMix - http://servicemix.org/
>>>>
>>>> Blog: http://bruceblog.org/
>>>>
>>>>
>>>>     
>>>
>>> Had a look at the docmentation but still something i dont understand. If
>>> we
>>> have 50 concurrent requests coming into service mix and my corepoolsize
>>> is
>>> set to 180 and the maximum is set to -1 in the executor default config
>>> wouldnt that be enough threads to handle 50 concurrent requests ?
>>>
>>> Unless by using seda flow each individual request that is processed by
>>> servicemix requires more than one thread ? Is that the case ? 
>>>
>>> Is there a basic rule of thumb for number of threads required to process
>>> a
>>> single request, for example: requests * JBI components involved * flow
>>> type
>>> constant
>>>
>>> Would using a st flow instead of seda reduce the number of threads
>>> required
>>> to process a individual request compared to seda ? If st flow is used is
>>> a
>>> single thread used for the entire request ?
>>>
>>> appreciate any clarification
>>>   
>> If you are talking about 15 concurrent requsets going from HTTP 
>> component to external web service then I think it is to do with jetty 
>> HttpClient ThreadPool size which by default is 16 ( out of which one is 
>> timer thread and rest 15 are worker threads). so you might be seeing 15 
>> request to web service.
>> 
>> If you use latest ServiceMix snapshot of ServiceMix 3.2  (or build your 
>> own from latest source) you can configure the threadpool size for jetty 
>> HttpClient by adding following line to component.properties file.
>> 
>> servicemix-http.jettyClientThreadPoolSize=<size you want>
>> 
>> Regards,
>> 
>> Ulhas Bhole
>> 
>> 
>> ----------------------------
>> IONA Technologies PLC (registered in Ireland)
>> Registered Number: 171387
>> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
>> 
>> 
> 
> excellent, however i am using the apache-servicemix-web-3.x.x war. The
> properties file is not part of the war. can i reference it in the war ? if
> not can i configure this in the applcation context xml or servicemix xml
> or via jmx
> 
still working on this issue. I am going to go into debug with servicmix.
Should i be looking the in the jetty package in the servicemix http
component
-- 
View this message in context: http://www.nabble.com/weird-performance-issue-tp18660765p18702422.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: weird performance issue

Posted by bsolrac <ca...@axa-canada.com>.


Ulhas Bhole wrote:
> 
> bsolrac wrote:
>> bsnyder wrote:
>>   
>>> On Fri, Jul 25, 2008 at 4:37 PM, bsolrac
>>> <ca...@axa-canada.com>
>>> wrote:
>>>     
>>>> setup
>>>>
>>>>
>>>> servicemix version: 3.1.2 web app
>>>> application server: JBoss 4.2.2
>>>>
>>>> We have a web service deployed on jboss instance A
>>>> We have service mix deployed on jboss instance b
>>>>
>>>> Jboss A is on server A
>>>> Jboss B is also on server A
>>>>
>>>> Scenario
>>>>
>>>> 1. Application sends xml (in/out mep) over http/soap to servicemix
>>>> 2. ServiceMix checks content via EIP ContentBasedRoutingRule
>>>> 3. Routes the xml to HTTP JBI component
>>>> 4. HTTP JBI component sends xml over HTTP/SOAP to web service
>>>> 5. Web service returns output
>>>> 6. servicemix returns output
>>>>
>>>> Service mix Configuration
>>>>
>>>>
>>>> flow=seda
>>>>
>>>> &lt;sm:executorFactory&gt;
>>>> &lt;bean
>>>> class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl"&gt;
>>>> &lt;property name="defaultConfig"&gt;
>>>> &lt;bean
>>>> class="org.apache.servicemix.executors.impl.ExecutorConfig"&gt;
>>>> &lt;property name="corePoolSize" value="180"/&gt;
>>>> &lt;property name="maximumPoolSize" value="-1"/&gt;
>>>> &lt;property name="queueSize" value="1024"/&gt;
>>>> &lt;property name="keepAliveTime" value="180000"/&gt;
>>>> &lt;/bean&gt;
>>>> &lt;/property&gt;
>>>> &lt;/bean&gt;
>>>> &lt;/sm:executorFactory&gt;
>>>>
>>>> Issue
>>>>
>>>>
>>>> We are recieving 50 concurrent requests in service mix but service mix
>>>> is
>>>> only sending a maximum of 15 concurrent requests to the web service.
>>>>
>>>> Any clue where the issue is ?
>>>>
>>>> We are going to try switching flow type to st instead of seda.
>>>>       
>>> Have you tried adjusting the thread pools yet?
>>>
>>> http://servicemix.apache.org/thread-pools.html
>>>
>>> There's also some additional explanation that I provided on the thread
>>> pool executor on the mailing list that is available here:
>>>
>>> http://markmail.org/search/?q=servicemix+executor+bruce#query:servicemix%20executor%20bruce+page:1+mid:sxwofyw5r3s3627b+state:results
>>>
>>> Bruce
>>> -- 
>>> perl -e 'print
>>> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
>>> );'
>>>
>>> Apache ActiveMQ - http://activemq.org/
>>> Apache Camel - http://activemq.org/camel/
>>> Apache ServiceMix - http://servicemix.org/
>>>
>>> Blog: http://bruceblog.org/
>>>
>>>
>>>     
>>
>> Had a look at the docmentation but still something i dont understand. If
>> we
>> have 50 concurrent requests coming into service mix and my corepoolsize
>> is
>> set to 180 and the maximum is set to -1 in the executor default config
>> wouldnt that be enough threads to handle 50 concurrent requests ?
>>
>> Unless by using seda flow each individual request that is processed by
>> servicemix requires more than one thread ? Is that the case ? 
>>
>> Is there a basic rule of thumb for number of threads required to process
>> a
>> single request, for example: requests * JBI components involved * flow
>> type
>> constant
>>
>> Would using a st flow instead of seda reduce the number of threads
>> required
>> to process a individual request compared to seda ? If st flow is used is
>> a
>> single thread used for the entire request ?
>>
>> appreciate any clarification
>>   
> If you are talking about 15 concurrent requsets going from HTTP 
> component to external web service then I think it is to do with jetty 
> HttpClient ThreadPool size which by default is 16 ( out of which one is 
> timer thread and rest 15 are worker threads). so you might be seeing 15 
> request to web service.
> 
> If you use latest ServiceMix snapshot of ServiceMix 3.2  (or build your 
> own from latest source) you can configure the threadpool size for jetty 
> HttpClient by adding following line to component.properties file.
> 
> servicemix-http.jettyClientThreadPoolSize=<size you want>
> 
> Regards,
> 
> Ulhas Bhole
> 
> 
> ----------------------------
> IONA Technologies PLC (registered in Ireland)
> Registered Number: 171387
> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
> 
> 

excellent, however i am using the apache-servicemix-web-3.x.x war. The
properties file is not part of the war. can i reference it in the war ? if
not can i configure this in the applcation context xml or servicemix xml or
via jmx
-- 
View this message in context: http://www.nabble.com/weird-performance-issue-tp18660765p18679901.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: weird performance issue

Posted by Ulhas Bhole <ul...@iona.com>.
bsolrac wrote:
> bsnyder wrote:
>   
>> On Fri, Jul 25, 2008 at 4:37 PM, bsolrac <ca...@axa-canada.com>
>> wrote:
>>     
>>> setup
>>>
>>>
>>> servicemix version: 3.1.2 web app
>>> application server: JBoss 4.2.2
>>>
>>> We have a web service deployed on jboss instance A
>>> We have service mix deployed on jboss instance b
>>>
>>> Jboss A is on server A
>>> Jboss B is also on server A
>>>
>>> Scenario
>>>
>>> 1. Application sends xml (in/out mep) over http/soap to servicemix
>>> 2. ServiceMix checks content via EIP ContentBasedRoutingRule
>>> 3. Routes the xml to HTTP JBI component
>>> 4. HTTP JBI component sends xml over HTTP/SOAP to web service
>>> 5. Web service returns output
>>> 6. servicemix returns output
>>>
>>> Service mix Configuration
>>>
>>>
>>> flow=seda
>>>
>>> &lt;sm:executorFactory&gt;
>>> &lt;bean
>>> class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl"&gt;
>>> &lt;property name="defaultConfig"&gt;
>>> &lt;bean class="org.apache.servicemix.executors.impl.ExecutorConfig"&gt;
>>> &lt;property name="corePoolSize" value="180"/&gt;
>>> &lt;property name="maximumPoolSize" value="-1"/&gt;
>>> &lt;property name="queueSize" value="1024"/&gt;
>>> &lt;property name="keepAliveTime" value="180000"/&gt;
>>> &lt;/bean&gt;
>>> &lt;/property&gt;
>>> &lt;/bean&gt;
>>> &lt;/sm:executorFactory&gt;
>>>
>>> Issue
>>>
>>>
>>> We are recieving 50 concurrent requests in service mix but service mix is
>>> only sending a maximum of 15 concurrent requests to the web service.
>>>
>>> Any clue where the issue is ?
>>>
>>> We are going to try switching flow type to st instead of seda.
>>>       
>> Have you tried adjusting the thread pools yet?
>>
>> http://servicemix.apache.org/thread-pools.html
>>
>> There's also some additional explanation that I provided on the thread
>> pool executor on the mailing list that is available here:
>>
>> http://markmail.org/search/?q=servicemix+executor+bruce#query:servicemix%20executor%20bruce+page:1+mid:sxwofyw5r3s3627b+state:results
>>
>> Bruce
>> -- 
>> perl -e 'print
>> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
>> );'
>>
>> Apache ActiveMQ - http://activemq.org/
>> Apache Camel - http://activemq.org/camel/
>> Apache ServiceMix - http://servicemix.org/
>>
>> Blog: http://bruceblog.org/
>>
>>
>>     
>
> Had a look at the docmentation but still something i dont understand. If we
> have 50 concurrent requests coming into service mix and my corepoolsize is
> set to 180 and the maximum is set to -1 in the executor default config
> wouldnt that be enough threads to handle 50 concurrent requests ?
>
> Unless by using seda flow each individual request that is processed by
> servicemix requires more than one thread ? Is that the case ? 
>
> Is there a basic rule of thumb for number of threads required to process a
> single request, for example: requests * JBI components involved * flow type
> constant
>
> Would using a st flow instead of seda reduce the number of threads required
> to process a individual request compared to seda ? If st flow is used is a
> single thread used for the entire request ?
>
> appreciate any clarification
>   
If you are talking about 15 concurrent requsets going from HTTP 
component to external web service then I think it is to do with jetty 
HttpClient ThreadPool size which by default is 16 ( out of which one is 
timer thread and rest 15 are worker threads). so you might be seeing 15 
request to web service.

If you use latest ServiceMix snapshot of ServiceMix 3.2  (or build your 
own from latest source) you can configure the threadpool size for jetty 
HttpClient by adding following line to component.properties file.

servicemix-http.jettyClientThreadPoolSize=<size you want>

Regards,

Ulhas Bhole


----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland

Re: weird performance issue

Posted by bsolrac <ca...@axa-canada.com>.

bsnyder wrote:
> 
> On Fri, Jul 25, 2008 at 4:37 PM, bsolrac <ca...@axa-canada.com>
> wrote:
>>
>> setup
>>
>>
>> servicemix version: 3.1.2 web app
>> application server: JBoss 4.2.2
>>
>> We have a web service deployed on jboss instance A
>> We have service mix deployed on jboss instance b
>>
>> Jboss A is on server A
>> Jboss B is also on server A
>>
>> Scenario
>>
>> 1. Application sends xml (in/out mep) over http/soap to servicemix
>> 2. ServiceMix checks content via EIP ContentBasedRoutingRule
>> 3. Routes the xml to HTTP JBI component
>> 4. HTTP JBI component sends xml over HTTP/SOAP to web service
>> 5. Web service returns output
>> 6. servicemix returns output
>>
>> Service mix Configuration
>>
>>
>> flow=seda
>>
>> &lt;sm:executorFactory&gt;
>> &lt;bean
>> class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl"&gt;
>> &lt;property name="defaultConfig"&gt;
>> &lt;bean class="org.apache.servicemix.executors.impl.ExecutorConfig"&gt;
>> &lt;property name="corePoolSize" value="180"/&gt;
>> &lt;property name="maximumPoolSize" value="-1"/&gt;
>> &lt;property name="queueSize" value="1024"/&gt;
>> &lt;property name="keepAliveTime" value="180000"/&gt;
>> &lt;/bean&gt;
>> &lt;/property&gt;
>> &lt;/bean&gt;
>> &lt;/sm:executorFactory&gt;
>>
>> Issue
>>
>>
>> We are recieving 50 concurrent requests in service mix but service mix is
>> only sending a maximum of 15 concurrent requests to the web service.
>>
>> Any clue where the issue is ?
>>
>> We are going to try switching flow type to st instead of seda.
> 
> Have you tried adjusting the thread pools yet?
> 
> http://servicemix.apache.org/thread-pools.html
> 
> There's also some additional explanation that I provided on the thread
> pool executor on the mailing list that is available here:
> 
> http://markmail.org/search/?q=servicemix+executor+bruce#query:servicemix%20executor%20bruce+page:1+mid:sxwofyw5r3s3627b+state:results
> 
> Bruce
> -- 
> perl -e 'print
> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
> );'
> 
> Apache ActiveMQ - http://activemq.org/
> Apache Camel - http://activemq.org/camel/
> Apache ServiceMix - http://servicemix.org/
> 
> Blog: http://bruceblog.org/
> 
> 

Had a look at the docmentation but still something i dont understand. If we
have 50 concurrent requests coming into service mix and my corepoolsize is
set to 180 and the maximum is set to -1 in the executor default config
wouldnt that be enough threads to handle 50 concurrent requests ?

Unless by using seda flow each individual request that is processed by
servicemix requires more than one thread ? Is that the case ? 

Is there a basic rule of thumb for number of threads required to process a
single request, for example: requests * JBI components involved * flow type
constant

Would using a st flow instead of seda reduce the number of threads required
to process a individual request compared to seda ? If st flow is used is a
single thread used for the entire request ?

appreciate any clarification
-- 
View this message in context: http://www.nabble.com/weird-performance-issue-tp18660765p18662146.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: weird performance issue

Posted by Bruce Snyder <br...@gmail.com>.
On Fri, Jul 25, 2008 at 4:37 PM, bsolrac <ca...@axa-canada.com> wrote:
>
> setup
>
>
> servicemix version: 3.1.2 web app
> application server: JBoss 4.2.2
>
> We have a web service deployed on jboss instance A
> We have service mix deployed on jboss instance b
>
> Jboss A is on server A
> Jboss B is also on server A
>
> Scenario
>
> 1. Application sends xml (in/out mep) over http/soap to servicemix
> 2. ServiceMix checks content via EIP ContentBasedRoutingRule
> 3. Routes the xml to HTTP JBI component
> 4. HTTP JBI component sends xml over HTTP/SOAP to web service
> 5. Web service returns output
> 6. servicemix returns output
>
> Service mix Configuration
>
>
> flow=seda
>
> &lt;sm:executorFactory&gt;
> &lt;bean
> class="org.apache.servicemix.executors.impl.ExecutorFactoryImpl"&gt;
> &lt;property name="defaultConfig"&gt;
> &lt;bean class="org.apache.servicemix.executors.impl.ExecutorConfig"&gt;
> &lt;property name="corePoolSize" value="180"/&gt;
> &lt;property name="maximumPoolSize" value="-1"/&gt;
> &lt;property name="queueSize" value="1024"/&gt;
> &lt;property name="keepAliveTime" value="180000"/&gt;
> &lt;/bean&gt;
> &lt;/property&gt;
> &lt;/bean&gt;
> &lt;/sm:executorFactory&gt;
>
> Issue
>
>
> We are recieving 50 concurrent requests in service mix but service mix is
> only sending a maximum of 15 concurrent requests to the web service.
>
> Any clue where the issue is ?
>
> We are going to try switching flow type to st instead of seda.

Have you tried adjusting the thread pools yet?

http://servicemix.apache.org/thread-pools.html

There's also some additional explanation that I provided on the thread
pool executor on the mailing list that is available here:

http://markmail.org/search/?q=servicemix+executor+bruce#query:servicemix%20executor%20bruce+page:1+mid:sxwofyw5r3s3627b+state:results

Bruce
-- 
perl -e 'print unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
);'

Apache ActiveMQ - http://activemq.org/
Apache Camel - http://activemq.org/camel/
Apache ServiceMix - http://servicemix.org/

Blog: http://bruceblog.org/