views:

665

answers:

1

Hi, all.

I've got an application running on Apache Tomcat 5.5 on a Win2k3 VM. The application serves up XML to be consumed by some telephony appliances as part of our IVR infrastructure. The application, in turn, receives its information from a handful of SOAP services.

This morning, the SOAP services were timing out intermittently, causing all sorts of Exceptions. Once these stopped, I noticed that our application was still performing very slowly, in that it took it a long time to render and deliver pages. This sluggishness was noticed both on the appliances that consume the Tomcat output, and from a simple test of requesting some static documents from my web browser.

Restarting Tomcat immediately resolved the issue.

Cracking open the localhost log, I see a ton of these errors, right up until I restarted Tomcat:

WARNING: Exception thrown whilst processing POSTed parameters  
java.net.SocketException: Software caused connection abort: recv failed

After a big of Googling, my working theory is that the SOAP issue caused my users to get errors, which caused them to make more requests, which put an increased load on the application. This caused it to run out of available sockets to handle incoming requests.

So, here's my quandary:
1. Is this a valid hypothesis, or am I just in over my head with HTTP and Tomcat?
2. If this is a valid hypothesis, is there a way to increase the size of the "socket queue", so that this doesn't happen in the future?

Thanks!
IVR Avenger

A: 

Did you happen to also check how the JVM was performing? I've seen similar behavior when a site ran low on memory.

As far as number of available connections - you can adjust that in the tomcat conf/server.xml - however by default is 150 (this is for tomcat 6.0 - not sure for tomcat 5.5).

BZ
I do not. If this happens again, I'll check all of the Tomcat and JVM stats before restarting. Thanks for info on the connections!
IVR Avenger