
| email this FAQ to a colleague
Q: Why can't I start IIS 3.0 and have it start serving files after the service has been stopped? A: When a TCP/IP connection is being broken, the last transmission from the client is an acknowledgement to the server that the connection is really over. Until the server gets this message, that connection is in a state called "FIN_WAIT_2". You can see the state of all the TCP/IP
connections on your server by running the "NETSTAT" (use "netstat -n" to avoid costly reverse-dns lookups) command-line utility. Anyway, when the server is in FIN_WAIT_2 and the client hangs up his modem, or the
internet goes down, or whatever, the server requires 4 minutes to time out that connection. If you close your instance of IIS (i.e. stop the service) and then open another IIS instance (i.e. start the service), until all those FIN_WAIT_2 TCP sessions time out, all new client
requests will be funneled by the TCP/IP manager of NT to the *old* instance of IIS, which of course is not around any more. It's even a little more complicated that that-- it's possible that you can have a connection stuck in FIN_WAIT_2, but still start up successfully, because
TCP/IP uses a "somewhat random algorithm" to decide which new application receives requests to a port with multiple open "endpoints". This will require a fix to Windows NT's TCP/IP subsystem to fix. It is currently NOT fixed in the Option Pack (i.e. IIS4). - Justin Grant |