Asp.net 如何诊断IIS将CPU使用率推至100%的情况?

Asp.net 如何诊断IIS将CPU使用率推至100%的情况?,asp.net,iis,cpu-usage,Asp.net,Iis,Cpu Usage,我有一个web服务器,上面运行着多个ASP.NET站点。每隔一段时间,我就会注意到IIS将服务器的CPU提升到100%。这些站点根据运行的.NET版本共享应用程序池 我正在寻找的是一种方法,能够准确地指出它是哪个网站在做这件事,使用一些工具。如果这个工具碰巧深入到代码中来展示它,那也很好。如果不是,我很高兴知道是哪个网站引起了这个问题 我已经试过用蚂蚁了。然而,对于ANTS,你需要知道它是哪个站点,然后让它运行并等待CPU崩溃的web应用程序。不太理想 有什么经验/想法吗?使用任务管理器获取占用

我有一个web服务器,上面运行着多个ASP.NET站点。每隔一段时间,我就会注意到IIS将服务器的CPU提升到100%。这些站点根据运行的.NET版本共享应用程序池

我正在寻找的是一种方法,能够准确地指出它是哪个网站在做这件事,使用一些工具。如果这个工具碰巧深入到代码中来展示它,那也很好。如果不是,我很高兴知道是哪个网站引起了这个问题

我已经试过用蚂蚁了。然而,对于ANTS,你需要知道它是哪个站点,然后让它运行并等待CPU崩溃的web应用程序。不太理想


有什么经验/想法吗?

使用任务管理器获取占用所有CPU的进程的PID,然后使用答案将PID与网站匹配。

除了David(正确)的答案外,一旦您确定了有问题的WS,VS2010和team tools在“分析”下有一些出色的性能分析功能菜单。有了这些工具,您应该能够立即将问题缩小到特定的代码行

使用性能分析向导非常简单-只需将它指向所讨论的项目,让它启动,在站点上运行各种操作,它将为您提供查找问题所需的所有指标(它甚至在编辑器中的CPU密集型代码旁边放置火焰图标)

低技术回答:
+使用任务管理器识别已加载的工作进程。
+使用c:\windows\system32\issapp.vbs标识加载进程的应用程序池名称 (或者,如果您熟悉该工具,DebugDiag也可以更轻松地执行相同的操作。在“流程”选项卡上有一个应用程序池名称的列标题。)
+创建新的应用程序池并在它们之间拆分应用程序,直到可以将导致问题的应用程序单独隔离到应用程序池中

更多技术性回答:
+使用任务管理器来识别 已加载工作进程。悬挂式垃圾场 使用DebugDiag的工作进程 或ADPlus-hang-p(其一部分) Windows调试工具,包括 从Microsoft免费下载)
+DebugDiag可以预分析挂起 为你倾倒垃圾,可能只会给你 你需要的所有线索。那是个好主意 通常采用的中等技术解决方案 作品你会想看看 “流程”选项卡,然后右键单击 令人不快的过程。选择“完全用户模式” “甩”之类的。发现 在c:\程序中创建的转储文件 文件\DebugDiag\Logs\Misc*.dmp和 双击它以查看 预分析。
+如果DebugDiag没有 给你足够的线索,然后WinDBG 我肯定能告诉你你需要什么 要知道,虽然这是一个神秘的 一开始就很难使用, 更不用说大师了。(这也是一个整体
非常有趣。如果你是一名管理员并且经常遇到这样的问题,我强烈建议你使用它。)

检查IIS调试诊断工具


另一种方法是,将每个站点分成不同的应用程序池,然后在TaskManager中查看应用程序池以查看内存使用情况

因此,如果我使用这种方法,我将不得不将所有网站拆分为单独的应用程序池?或者进行二进制搜索。将应用程序拆分为两个池。当你看到其中一个程序变得不稳定时,把其中一半的应用程序放到另一个池中。当你看到一个不稳定,…@Irish-有一个新版本(1.2)在测试版,更好地支持64位windows。您需要向团队发送电子邮件(dbgdiag(at)microsoft.com)以获取副本。但他们的回复非常快(我的回复时间不到1小时)。