大约半天后,IIS 6.0 ASP (VBScript) Web 服务器似乎死机了。它接受 TCP 连接(即我可以telnet localhost 80
成功)但是它不返回任何响应。
当我重新启动服务器(通过我的电脑 -> 管理 -> IIS -> 所有任务 -> 重新启动)C:\WINDOWS\system32\LogFiles\HTTPERR\httperr1.log
时,我在重新启动时收到很多条目:
... 80 HTTP/1.1 GET / - 843545307 Connection_Abandoned_By_AppPool DefaultAppPool
... 80 HTTP/1.0 GET / - 843545307 Connection_Abandoned_By_AppPool DefaultAppPool
... 80 HTTP/1.0 GET / - 843545307 Connection_Abandoned_By_AppPool DefaultAppPool
其中...
指的是行的前缀,例如
2010-03-17 10:05:06 127.0.0.1 4927 127.0.0.1 80
重启时我的日志中有 583 行这样的行 ( Connection_Abandoned_By_AppPool
)。
这个问题的原因可能是什么?
我的猜测是应用程序出现故障,导致一大堆请求排队。当你重新启动 IIS 时,它无法赶上 90 秒的超时,所以它必须强制结束所有未完成的请求。因此,您在 httperr 中看到的是影响而不是原因。
当它失败时,静态页面是否有效?这将告诉您是 IIS 还是 ASP 有问题。您的 telnet 测试非常棒。这很有帮助。
在重新启动之前检查 IIS 日志,看看是否有任何其他线索表明哪些页面是服务器,或者最后几个成功运行的请求是什么。这可能会提供更多线索。
Perfmon 有一些计数器可以显示队列请求和错误的数量。当它失败时,您可能能够观察到它和趋势,并可能知道根本问题何时首次触发。