我有一个Web服务器上运行了多个ASP.NET站点。我经常注意到IIS正在将服务器的CPU推向100%。这些站点按照它们运行的.NET版本共享应用程序池。
我正在寻找的是一种能够使用某种工具确定正在执行此操作的网站的方法。如果该工具碰巧进入代码展示它,那也很好。如果没有,我很高兴知道哪个网站导致了这个问题。
我已经尝试过使用ANTS了。但是,使用ANTS,您需要知道它是哪个站点,然后让它运行并等待所述CPU崩溃的Web应用程序。不太理想。
任何经验/想法?
答案 0 :(得分:2)
使用任务管理器获取占用所有CPU的进程的PID,然后使用this question的答案将PID与网站匹配。
答案 1 :(得分:2)
检查IIS调试诊断工具http://support.microsoft.com/kb/919790,
另一种方法,将每个站点分成不同的应用程序池,然后在任务管理器中查看应用程序池以查看内存使用情况。
答案 2 :(得分:0)
除了David的(正确的)答案之外,一旦你确定了有问题的WS,带有团队工具的VS2010在“Analyze”菜单下有一些很棒的性能分析。使用这里的工具,您应该能够立即将问题缩小到特定的代码行。
使用性能分析向导非常简单 - 只需将其指向相关项目,让它启动,在网站上运行各种操作,它将为您提供找到问题所需的每个指标(甚至可以放置)编辑器中CPU密集型代码旁边的火焰图标
答案 3 :(得分:0)
低科技回答:
+使用任务管理器识别加载的工作进程
+使用c:\ windows \ system32 \ issapp.vbs标识已加载进程的应用程序池名称
(或者,如果您熟悉该工具,DebugDiag更容易做同样的事情。在Process选项卡上有App Pool名称的列标题。)
+创建新的应用程序池并在它们之间拆分应用程序,直到您可以将导致问题的应用程序隔离到应用程序池中。
更多技术答案:
+使用任务管理器识别
加载工人进程。挂转
该工作进程使用DebugDiag
或ADPlus -hang -p(的一部分
适用于Windows的调试工具
从微软免费下载)
+ DebugDiag可以预先分析挂起
为你转储,可能只是给你
你需要的所有线索。那是一个
经常是中等技术解决方案
作品。你会想看看
进程选项卡并右键单击
违规过程。选择“完整用户模式”
转储“或类似的东西。找到
在c:\ Program创建的转储文件
Files \ DebugDiag \ Logs \ Misc * .dmp和
双击它以查看
预分析。
+如果DebugDiag没有
给你足够的线索,然后是WinDBG
当然可以告诉你你需要什么
要知道,虽然这是一个神秘而且
甚至难以开始的工具,
更不用说了。 (这也是一个整体
很多乐趣。如果您是管理员并且经常问这样的问题,我强烈推荐它。 )