Hi Freeman,

  I get your point. The number of threads created for the servicemix-camel
was insufficient to cater to the requests for the threads created by the
consumer side. So by adding qeueSize=0 and maximumPoolSize 
= -1( creating as many concurrent threads as requests) to the 
servicemix-camel component, the bottleneck is solved. 

Regards,
Ganesh


Freeman Fang wrote:
> 
> Hi,
> 
> This should be a threadPool issue.
> To avoid the hanging thread, you can set queueSize=0 and maximumPoolSize 
> = -1 for your servicemix-camel component.
> With this configuration, for new incoming request, a new thread will be 
> created, so that avoid the deadlock.
> This may cause a problem(too many threads created) when you have too 
> much concurrent request,
> but if the endpoint you see have the thread problem play the role as 
> provider, I think one solution is that you can also add thread pool on 
> consumer side so that you can control the concurrent invocation number 
> arrive the provider to avoid the resource run out problem.
> 
> For example, the work flow looks like
> external client ===> cxf bc consumer ===> your SE (servicemix-camel in 
> your case)
> Although you can't control how many concurrent invocation  comes to cxf 
> bc consumer, but you can configure the cxf bc consumer thread pool size 
> (by configure the underlying jetty)to determine how many invocation can 
> dispatch to your SE at the same time.
> This is just a example, hopefully  you can get roughly idea how things 
> can work.
> Ideally, the concurrent request should be less than the corePoolSize for 
> component when you use sendSync (which potentially have thread deadlock 
> issue when corePoolSize is run out)
> 
> Another way to avoid the deadlock is use send instead.
> 
> [1] get more details about threadPool configuration
> [1]http://servicemix.apache.org/thread-pools.html
> 
> Freeman
> 
> navigator09 wrote:
>> Hi,
>>
>>   I think there is a deadlock situation between two(6 and 16) threads and
>> the two threads will simply wait till the they time out. I have pasted
>> the
>> logs produced before servicemix stops all activity
>>
>> 19:51:23,171 | DEBUG | pool-flow.seda.servicemix-camel-thread-16 |
>> SecuredBroker            | mix.jbi.security.SecuredBroker   66 | send
>> exchange with secure broker
>> 19:51:23,187 | INFO  | pool-flow.seda.servicemix-camel-thread-6 |
>> jobsubmissionoutput      | .apache.camel.processor.Logger   88 |
>> Exchange[BodyType:javax.xml.transform.dom.DOMSource,
>> Body:<submitJobResponse
>> xmlns="http://www.icenigrid.org/service/gridsam";
>> xmlns:ns2="http://schemas.ggf.org/jsdl/2005/11/jsdl";><JobIdentifier><ID>{"WorkingDirectory":"uploadfiles","ServerIP":"10.20.3.97","Password":"icmconct","UserName":"icmconct","JobDetails":"940:0"}</ID></JobIdentifier></submitJobResponse>]
>> 19:51:23,343 | DEBUG | pool-flow.seda.servicemix-camel-thread-6 |
>> DeliveryChannelImpl      | .messaging.DeliveryChannelImpl  458 | SendSync
>> ID:10.20.3.92-11e88445927-2:33 in DeliveryChannel{servicemix-camel}
>> 19:51:23,343 | DEBUG | pool-flow.seda.servicemix-camel-thread-16 |
>> SecuredBroker            | mix.jbi.security.SecuredBroker   72 | service
>> name :{http://foo.bar.org}EventProcessor
>> 19:51:23,343 | DEBUG | pool-flow.seda.servicemix-camel-thread-6 |
>> SecuredBroker            | mix.jbi.security.SecuredBroker   66 | send
>> exchange with secure broker
>> 19:51:23,343 | DEBUG | pool-flow.seda.servicemix-camel-thread-16 |
>> SecuredBroker            | mix.jbi.security.SecuredBroker   73 |
>> operation
>> name :{http://www.icenigrid.org/service/gridsam}submitJob
>> 19:51:23,343 | DEBUG | pool-flow.seda.servicemix-camel-thread-6 |
>> SecuredBroker            | mix.jbi.security.SecuredBroker   72 | service
>> name :{http://foo.bar.org}EventProcessor
>> 19:51:23,343 | DEBUG | pool-flow.seda.servicemix-camel-thread-6 |
>> SecuredBroker            | mix.jbi.security.SecuredBroker   73 |
>> operation
>> name :{http://www.icenigrid.org/service/gridsam}submitJob
>> 19:51:23,343 | DEBUG | pool-flow.seda.servicemix-camel-thread-16 |
>> SedaFlow                
>> | emix.jbi.nmr.flow.AbstractFlow  118 | Called Flow send
>> 19:51:23,359 | DEBUG | pool-flow.seda.servicemix-camel-thread-16 |
>> DeliveryChannelImpl      | .messaging.DeliveryChannelImpl  693 | Waiting
>> for
>> exchange ID:10.20.3.92-11e88445927-2:32 (19b9669) to be answered in
>> DeliveryChannel{servicemix-camel} from sendSync
>> 19:51:23,359 | DEBUG | pool-flow.seda.servicemix-camel-thread-6 |
>> SedaFlow                
>> | emix.jbi.nmr.flow.AbstractFlow  118 | Called Flow send
>> 19:51:23,375 | DEBUG | pool-flow.seda.servicemix-camel-thread-6 |
>> DeliveryChannelImpl      | .messaging.DeliveryChannelImpl  693 | Waiting
>> for
>> exchange ID:10.20.3.92-11e88445927-2:33 (1afe611) to be answered in
>> DeliveryChannel{servicemix-camel} from sendSync
>>
>> How do I solve the problem?
>>
>> Regards,
>> Ganesh
>>
>> navigator09 wrote:
>>   
>>> Hi,
>>>
>>>   I am load testing the following configuration 
>>>
>>>    from("jbi:endpoint:http://foo.bar.org/Pipeline/Endpoint?mep=in-out";).
>>>   
>>> to("jbi:endpoint:http://www.icenigrid.org/service/gridsam/JobSubmission/JobSubmission?mep=in-out";).
>>>    convertBodyTo(DOMSource.class).
>>>    to("log:jobsubmissionoutput").                           
>>>   
>>> to("jbi:endpoint:http://foo.bar.org/EventProcessor/EventProcessorendpoint";).
>>>
>>> The entire flow works well with 7 concurrent threads. But when I try
>>> with
>>> more threads , the flow works fine till
>>> jbi:endpoint:http://www.icenigrid.org/service/gridsam/JobSubmission/JobSubmission?mep=in-out
>>> end point. The response from this end point is not forwrded to the event
>>> processor end point and I get the following message
>>>
>>>   19:02:04,500 | DEBUG | pool-flow.seda.servicemix-camel-thread-3 |
>>> SecuredBroker            | mix.jbi.security.SecuredBroker   72 | service
>>> name :{http://foo.bar.org}EventProcessor
>>> 19:02:04,500 | DEBUG | pool-flow.seda.servicemix-camel-thread-6 |
>>> DeliveryChannelImpl      | .messaging.DeliveryChannelImpl  693 | Waiting
>>> for exchange ID:10.20.3.92-11e881736ec-2:19 (de1520) to be answered in
>>> DeliveryChannel{servicemix-camel} from sendSync
>>>
>>> Then after waiting for around 10 minutes the the thread expires ( as
>>> configured in component.properties). Why is the event processor not
>>> being
>>> processed properly for 10 and above concorrent threads. 
>>>
>>> Regards,
>>> Ganesh
>>>
>>>     
>>
>>   
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Load-testing-problems-with-servicemix-camel-component-tp21217362p21227353.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to