![IIS 7 生成进程并因琐碎请求而占用内存](https://linux22.com/image/610648/IIS%207%20%E7%94%9F%E6%88%90%E8%BF%9B%E7%A8%8B%E5%B9%B6%E5%9B%A0%E7%90%90%E7%A2%8E%E8%AF%B7%E6%B1%82%E8%80%8C%E5%8D%A0%E7%94%A8%E5%86%85%E5%AD%98.png)
我们有一个在 IIS 7.0 上运行的 Web 应用 (ASP.NET MVC 4)。最近,它开始崩溃,日志记录OutOfMemoryException
就是原因。我们还收到大量“工作进程不健康”通知,以及“初始化失败”和“创建 AppDomain 失败”。在测试中,我们注意到 IIS 会为每一个请求,即使是相对轻量级页面的简单 GET 请求。这显然会导致内存使用量激增 - 通常在 100 到 200MB 之间。不出所料,不久它就会耗尽内存,速度变慢直至停止并最终崩溃。
该服务器已运行该应用程序一段时间了,虽然最近对其进行了一些更改,但它们大多是小错误修复或外观调整,当我用旧备份替换它时,这个问题仍然存在。
这可能是什么原因造成的?我该如何解决?
答案1
听起来像是网络花园(一个应用程序池产生额外的进程)。我建议尽量不要使用网络花园(如果正在使用)。此外,如果您使用 SCOM 2012 sp1,我建议部署 APM(应用程序性能监视器)并推送管理包来监视正在发生的事情。APM 不需要任何代码更改,并且可以深入到功能级别。唯一的其他选择是使用 IIS Debug Diag 来http://support.microsoft.com/kb/919790
答案2
您需要使用调试器来查看问题究竟出在哪里。很可能是代码问题(如果您的应用程序是自行开发的)。