我有一个非常繁忙的网站,运行在W2K8 + IIS7上的一台Web前端机器上。
时不时地 – 例如。 也许星期一在凌晨3点左右,然后几天后..一些清晨的时间..然后没有2个星期…等 – 网站无法响应任何客户端连接。
即。 没有人可以连接到网站。
我可以远程桌面到机器等没有probs。
我重新启动应用程序池(网站运行在集成模式),仍然没有。 我试图得到这个过程的崩溃转储(大概是600MB甚至更多)…大约一分钟的尝试(我有足够的高清空间)失败。
解决此问题的唯一方法是手动停止www服务,然后重新启动它。 停止需要一段时间(一分钟),而启动几乎是瞬间的。
我不知道我的代码是什么部分造成这一点。 起初,我认为这可能是一个堆栈溢出,因为一些错误,可能会进入错误页面,从而错误..冲洗重复繁荣。 但是我看了一下错误页面,感觉很好。
所以,我希望有人能够帮助,并说我如何正确地得到IIS过程的正确转储,所以我可以做一些更多的尸体解剖。 我会给Tess Ferrandez (崩溃debugging女神)发电子邮件,但我想我会在我发送垃圾邮件之前尝试在这里。
任何人都可以有任何build议,我怎么可以弄清楚如何开始debugging这个问题?
有些事情要考虑:
我早就发现了答案。
应用程序崩溃,无论什么原因(我仍然无法弄清楚究竟在哪里),但为什么IIS停止,是它发生了很多,在短时间内 – IIS将此称为快速失败保护 。
以下是一些典型设置的屏幕截图。 如果我正确理解这一点,就是说如果5分钟内有5次崩溃,那么停止这个应用程序池并回复Service Unavailable消息。 (在这个屏幕截图中,快速失败保护被closures,虽然)。
替代文字http://www.west-wind.com/WebLog/images/200602/ApplicationPoolRapidFailProtection.png
所以这就是为什么我的网站是“拒绝连接”。 应用程序池被告知停止(collaberate和listen …),并返回一个503 for any new connections直到一个人( 咳嗽我咳嗽 )检查出发生了什么并手动重新启动应用程序池。