在我管理的生产机器上,应用程序池会定期死机。死机后,如果不发出 iisreset,似乎无法停止或重置它们。在这种情况下,我使用“死机”一词来表示应用程序池托管的网站不再响应请求。
有 7 个应用程序池;4 个从未死机,另外 3 个死机不规律。过去,一个池在 iisreset 后仅一小时就关闭了。我几乎可以肯定,每个池中的问题都是由池中的某个应用程序引起的。最终我会找到这个问题。
这就是我需要你帮助的原因。一旦池死掉,我似乎无法停止或回收它。在 IIS 管理器中,尝试回收死池会冻结管理器,我被迫强制关闭它。尝试停止死池会导致挂起,最终以错误消息结束,提示池未响应停止或控制请求。我能够恢复应用程序池的唯一方法是执行 iisreset。
池死亡后,它不会出现在 iisapp.vbs 输出中。
应用程序事件日志中没有任何故障迹象。
系统是 Windows Server 2003 R2 SP 2。出现问题的应用程序池由 ASP.NET Web 应用程序填充。
这是怎么回事?是否有某种命令行方式可使应用程序池(重新)启动?我的配置是否有问题,导致我无法回收其中一个已死的应用程序池?
答案1
看起来那些“死”池或多或少被卡在某个地方,可能陷入无限循环,因此它们无法响应来自 IIS 的停止/回收请求。
如果您查看任务管理器中的“w3wp.exe”进程,会发生什么情况?您应该有一些这样的进程,每个进程都服务于一个应用程序池;如果这是一个无限循环问题,那么服务于“死”池的进程将大量使用 CPU 时间(通常占用单个 CPU 核心的最大值);您可以从中识别它并从任务管理器中将其终止。