网站在 iis7 中挂起 - 我该如何排除故障?

网站在 iis7 中挂起 - 我该如何排除故障?

我目前遇到了运行 IIS 7 的 Windows 2008 服务器的问题。该服务器运行多个站点,但似乎只有一个特定站点存在问题。

每隔一段时间,整个服务器就会变得非常慢,几乎所有请求都会超时!我们登录查看时,总会发现 IIS 进程占用了大约 90% 的 CPU。查看 IIS 中的工作进程,通常会发现一两个请求已经运行了很长时间。它们始终处于 ExecuteRequestHandler 状态,模块名称为 ManagedPipeline,我正在查看的当前请求已经运行了 7686248(它没有说明这是以什么单位表示的?)。它也并不总是同一个页面,事实上,当这种情况发生时,我们在 url 下看到了至少 3 个不同的页面。

看来让服务器恢复活力的唯一方法就是杀死 90% 的进程!

该网站在 .Net 4.0 下运行,其上的代码与服务器上没有问题的其他网站非常相似!

我该如何开始解决这个问题?

答案1

看起来 ASP.NET 应用程序出了问题,像是一个非常长/无限循环的情况。

我将启用失败请求跟踪,并根据每个内容和每个状态代码可能需要超过 60 秒的请求对其进行限制(使用范围 100-600)。

此外,尽管未在 UI 中显示,但您也可以配置要运行的命令行,您可以在其中生成进程的转储,以便以后可以使用调试器(如 Windbg + SOS.dll)来准确查看请求的位置以及它们在做什么。这可能是最好的方法,但它确实需要对 Windows 调试工具有一点了解http://www.microsoft.com/whdc/devtools/debugging/default.mspx

一个更简单的替代方法是您也可以对您的应用程序进行检测,特别是您看到花费大量时间的 URL 和页面(顺便说一下,时间以毫秒为单位,所以您的页面已经花费了 2 个多小时!!!),您可以使用 System.Diagnostics 或 Page.Trace 并将它们路由到 FREB 日志,这样您将获得有意义的信息。

答案2

也许可以考虑启用额外的日志记录: http://technet.microsoft.com/en-us/library/cc731798%28WS.10%29.aspx

相关内容