SSL Connection Reset after 5 minutes
I have a web application running on 6.1 SP7. The app is running under ssl and connects to another app also running ssl. The first application requests a large file from the second. But after 5 minutes the first application fails with:
[15/May/2007:14:57:42] warning (14366): CORE3283: stderr: java.net.SocketException: Connection reset
The second application continues to pull together the file to send but then also fails when it tries to write the file back because the connection has been reset.
The SSLSessionTimeOut is set to 28800 for both web servers
This problem seems like I've missed a timeout setting somewhere.
Thanks for any help!
# 1
Connection reset errors are unrelated to SSLSessionTimeout. SSLSessionTimeout controls how long an SSL session can sit idle before the server will refuse to resume that session. Note that there isn't a 1:1 relationship between SSL sessions and connections; a given SSL session can be used by multiple connections. Connection reset errors occur when a peer closes the connection.
Unfortunately, you'll need to debug the application to figure out why it's closing the connection. I assume that your application is implemented as a Servlet. I'm not aware of any Servlet container -- Web Server included -- that will close a connection before the Servlet returns or explicitly closes the connection.
# 2
I overlooked one obvious possibility: there may be a firewall or other network device between your two applications that is aborting the connection without the consent of either application. A network packet trace on the two nodes could confirm whether this is the case. If it is, you'll need to fix the firewall.
# 3
Thanks for your quick response Elving. We removed the ssl and got the same connection reset so that confirms your response. This is a servlet application. Are you saying the following code should in theory wait indefinitely for a response?
URLConnection con = servlet.openConnection();
con.connect();
//get the response code
int responseCode = ((HttpURLConnection) con).getResponseCode();
System.out.println("Response code: " + responseCode);
# 4
It's possible for an URLConnection to time out -- I believe the default timeouts vary across Java versions and couldn't be controlled by applications until Java SE 5.0 -- but that would result in a java.net.SocketTimeoutException, not a java.net.SocketException.