httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Roy T. Fielding" <field...@liege.ICS.UCI.EDU>
Subject more FIN_WAIT_2 analysis
Date Tue, 21 Jan 1997 18:08:30 GMT
I have been able to reproduce the FIN_WAIT_2 condition consistently
using "Mozilla/3.01Gold (X11; I; SunOS 5.5 sun4m)" with the 1.2b5-dev
server on the same machine (Solaris 2.5, sparc4).  It is caused by
Netscape not closing the connection when a close is received from
the server after a keep-alive timeout.  It is equally present when
the same client has a keep-alive connection to an Apache 1.1.3 server.

In my case, the FIN_WAIT_2 ends when the first of the following occur:
   1) the client attempts to make another request on the same
      connection and finds that it is closed, or closes the connection
      so that it can make a request to some other server.
   2) the client is exited
   3) the Solaris kernel times-out FIN_WAIT_2

At the same time, the client lists its sockets in CLOSE_WAIT state
(and remains in that state until (1) or (2) above.  In other words,
Netscape is just being frickin lazy and wasteful.

My guess is that there exists a Windows version that doesn't close
the client sockets on (2) and, when combined with an OS that doesn't
have a FIN_WAIT_2 timeout, results in FIN_WAIT_2-forever conditions.
Note, however, that a client which is just sitting idle will hold
onto its last connections as well, so attempting to run without a FIN_WAIT_2
timeout will pretty much require disabling keep-alive for Mozilla/*.

I'll try fooling around with parts of the lingering_close routine to
see if it has any effect, but given that I see the same occurring on
Apache 1.1.3, I doubt that we can do anything about it.


View raw message