Java.net.SocketException: Software caused connection abort: recv failed; Causes and Cures?
I have an application running Apache Tomcat 5.5 in a Win2k3 VM. The application serves XML to consume some telephony devices as part of our IVR infrastructure. The application, in turn, gets its information from several SOAP services.
SOAP services were interrupting intermittently this morning, throwing all sorts of Exceptions. As soon as they stopped, I noticed that our application was still very slow as it took a long time to render and deliver the pages. This sluggishness has been seen both on devices consuming Tomcat output and a simple test of requesting some static documents from my web browser.
Restarting Tomcat resolved the problem immediately.
Hacking the local log, I see a ton of these errors, all the way up to restarting Tomcat:
WARNING: Exception thrown whilst processing POSTed parameters
java.net.SocketException: Software caused connection abort: recv failed
After a lot of Googling, my working theory is that the SOAP problem caused my users to get errors, causing them to make more requests, which put more load on the application. This resulted in it having no available sockets to handle incoming requests.
So here's my difficulty:
1. Is this a valid hypothesis, or am I just 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" to prevent this from happening in the future?
Thank!
IVR Avenger
source to share
Have you also managed to test how the JVM works? I've seen similar behavior when the site is low on memory.
As for the number of available connections, you can configure it in the tomcat conf / server.xml file, but the default is 150 (this is for tomcat 6.0 - not necessary for tomcat 5.5).
source to share