帮助试图找出为什么IIS7崩溃/locking/拒绝连接

我有一个非常繁忙的网站,运行在W2K8 + IIS7上的一台Web前端机器上。

时不时地 – 例如。 也许星期一在凌晨3点左右,然后几天后..一些清晨的时间..然后没有2个星期…等 – 网站无法响应任何客户端连接。

即。 没有人可以连接到网站。

我可以远程桌面到机器等没有probs。

我重新启动应用程序池(网站运行在集成模式),仍然没有。 我试图得到这个过程的崩溃转储(大概是600MB甚至更多)…大约一分钟的尝试(我有足够的高清空间)失败。

解决此问题的唯一方法是手动停止www服务,然后重新启动它。 停止需要一段时间(一分钟),而启动几乎是瞬间的。

我不知道我的代码是什么部分造成这一点。 起初,我认为这可能是一个堆栈溢出,因为一些错误,可能会进入错误页面,从而错误..冲洗重复繁荣。 但是我看了一下错误页面,感觉很好。

所以,我希望有人能够帮助,并说我如何正确地得到IIS过程的正确转储,所以我可以做一些更多的尸体解剖。 我会给Tess Ferrandez (崩溃debugging女神)发电子邮件,但我想我会在我发送垃圾邮件之前尝试在这里。

任何人都可以有任何build议,我怎么可以弄清楚如何开始debugging这个问题?

有些事情要考虑:

  1. 当iis停止工作时,www过程在做什么? (即消耗CPU,消耗内存,平铺?)
  2. 从服务器可以telnet到网站(主机名或IP地址)或连接失败?
  3. 它是否一早失败? 你在那个时候跑东西吗? 备份,批处理或数据库的东西?
  4. 你的asp.net进程是否消耗了大量内存或者CPU?
  5. 如果您创build第二个nonasp.net网站(纯html),它是否继续function?

我早就发现了答案。

应用程序崩溃,无论什么原因(我仍然无法弄清楚究竟在哪里),但为什么IIS停止,是它发生了很多,在短时间内 – IIS将此称为快速失败保护 。

以下是一些典型设置的屏幕截图。 如果我正确理解这一点,就是说如果5分钟内有5次崩溃,那么停止这个应用程序池并回复Service Unavailable消息。 (在这个屏幕截图中,快速失败保护被closures,虽然)。

替代文字http://www.west-wind.com/WebLog/images/200602/ApplicationPoolRapidFailProtection.png

所以这就是为什么我的网站是“拒绝连接”。 应用程序池被告知停止(collaberate和listen …),并返回一个503 for any new connections直到一个人( 咳嗽我咳嗽 )检查出发生了什么并手动重新启动应用程序池。