我有一个非常繁忙的网站,它在 W2K8 + IIS7 上的单个 Web 前端机器上运行。
时不时地-例如。也许是星期一凌晨 3 点或其他时间,然后几天后.. 某个清晨的时间.. 然后 2 周内什么都没有......等等 - 该网站无法响应任何客户端连接。
IE。没有人可以连接到该网站。
我可以远程桌面到机器等没有问题。
我重新启动应用程序池(网站以集成模式运行),仍然没有。我尝试获取该过程的崩溃转储(大约 600 mb 甚至更多)......尝试大约一分钟后失败(而且我有足够的高清空间)。
解决此问题的唯一方法是手动停止 www 服务,然后重新启动它。停止需要一段时间(一分钟?),而启动几乎是即时的。
我不知道我的代码的哪一部分导致了这种情况。起初,我认为这可能是堆栈溢出,因为某些错误可能会进入错误页面,从而导致错误..冲洗重复繁荣。但是我看过错误页面,感觉还可以。
因此,我希望有人能够帮助并说明如何正确获取 IIS 进程的正确转储,以便我可以对其进行更多的尸检。我会向Tess Ferrandez(崩溃调试女神)发送电子邮件,但我想在向她发送垃圾邮件之前先在这里尝试一下。
任何人都可以对我如何弄清楚如何开始调试这个问题有任何建议吗?
需要考虑的一些事项:
不久前我已经找到了答案。
该应用程序由于某种原因而崩溃(我仍然无法弄清楚究竟在哪里),但是 IIS 停止的原因是它在短时间内发生了很多 - IIS 将其称为RAPID-FAIL PROTECTION。
这是一些典型设置的屏幕截图。如果我理解正确,就是说如果在 5 分钟内发生 5 次崩溃,则停止此应用程序池并回复 Service Unavailable 消息。(不过,在此屏幕截图中,快速故障保护已关闭)。
(来源:西风网)
所以这就是我的网站“拒绝连接”的原因。应用程序池被告知停止(协作并倾听......)并返回 a
503 for any new connections
直到人类(咳咳咳)检查发生了什么并手动重新启动应用程序池。