0
votes

I have two webapps running on websphere 8, the first is accepting incoming requests, retrieving data from the second webapp and sending the response to the client. The communication is realized with W3C SOAP WebServices via HTTP (Axis2).

While load testing with loadUI, I recognized the following behavior: Sequential requests allow a high load while parallel requests fail almost immediately with a "connection refused" message by the second web application.

The same setup on Tomcat allows a high load in both cases.

The number of maximum open connections is configured to 500, the default thread pool has maximum 20 threads, the default web container has 10 threads.

Does anyone know of any websphere settings that could help me?

2
It sounds like some coding pattern (in Axis) which isn't guaranteed to be dispatched in parallel but happens to be so under Tomcat. Perhaps a default threading model in Tomcat that is different than WebSphere. Just a guess, mind you. I presume you're deploying Axis2 in your web application rather than using WebSphere's built-in SOAP support. Have you tried the WebSphere forum? ibm.com/developerworks/forums/forum.jspa?forumID=266&cat=9dbreaux
Could you please post the error stack trace for the Connection Refused error? Also when you mention communication is being realized with SOAP, do you mean the communication between first and second application? if not. How you're calling the second application from the first one?groo
@dbreaux: your guess is right. We deploy axis2 in our webapp. Interesting thought about the threading model.. let's see if this idea leads us somewhere. I've searched the websphere forums, but started to ask the question here after my unsuccessful search..Mgmr
I see that I get such a stacktrace which will be on Tuesday when I'm back in office. The communication to the first one and also from the second to the first one is via SOAP. We call the first one in parallel and get connection refused after about 9 calls..Mgmr
If you only searched the forum but didn't post your specific question there, you still might try that. I expect there are more WebSphere experts following there than here.dbreaux

2 Answers

4
votes

I have found the solution to my problem which I wanted to share with you.

Every request results in two threads being used in the Websphere Application server, one thread in the first web application and another one in the second.

When I was trying to perform a load test with 5 clients (10 threads in WAS) in parallel, it still worked, but calling it with 10 clients (20 threads in WAS) in parallel, it did not work anymore. So I checked the websphere settings and found out that I have a maximum of 10 threads configured in websphere. So when the 10 clients were using all threads, they waited forever to get another thread to contact the second webapplication.

So my advice for everyone out there:
When you perform load tests, have an eye on the Websphere thread settings which can be accessed via the following path: Servers -> Application Servers -> servername -> Thread Pools -> Web Container.

0
votes

The real problem underneath this situation is NOT necessarily related to the thread pool. the problem in those cases is that the WS (code) is not developed with Thread safe feature.

Thread safe is the problem.