在 IIS6 上运行的 ASP.NET Web 应用程序会定期将 CPU 提高到 100%。在这些情节中,几乎所有 CPU 使用都是由 W3WP 负责的。CPU 在几分钟到一个多小时内保持 100%。
这是在登台服务器上,此时该站点仅从测试人员那里获得非常少的流量。
我们已经在服务器上运行了 ANTS 分析器,但它一直没有启发性。
我们从哪里开始找出导致这些事件的原因以及在这段时间里让 CPU 忙碌的代码是什么?
在 IIS6 上运行的 ASP.NET Web 应用程序会定期将 CPU 提高到 100%。在这些情节中,几乎所有 CPU 使用都是由 W3WP 负责的。CPU 在几分钟到一个多小时内保持 100%。
这是在登台服务器上,此时该站点仅从测试人员那里获得非常少的流量。
我们已经在服务器上运行了 ANTS 分析器,但它一直没有启发性。
我们从哪里开始找出导致这些事件的原因以及在这段时间里让 CPU 忙碌的代码是什么?
这不是一个很好的答案,但您可能需要回到老学校并捕获 IIS 进程的图像快照并对其进行调试。您可能还想查看Tess Ferrandez的博客 - 她是一位出色的微软升级工程师,她的博客专注于调试 windows ASP.NET,但该博客通常与 windows 调试相关。如果您选择 ASP.NET 标记(我已链接到该标记),那么您将看到几个相似的项目。
如果您的 CPU 达到 100% 并保持在那里,那么您很可能遇到死锁情况或无限循环。探查器似乎是寻找无限循环的好选择。然而,死锁更难追踪。
Process Explorer是一款出色的故障排除工具。您可以尝试使用它来查找CPU使用率高的问题。它让您深入了解应用程序的工作方式。
您还可以尝试Procdump转储进程并分析 CPU 上实际发生的情况。
另外,请查看您的性能计数器。他们可以告诉你很多 CPU 时间都花在了哪里。以下是最常用计数器的链接:
我们在将大量数据转储到输出的递归查询中遇到了这个问题 - 您是否仔细检查了所有内容是否退出并且不存在无限循环?
可能会尝试用一个页面来缩小范围 - 我们发现 ANTS 在同样的情况下也没有太大帮助 - 我们最终做的是运行网站点击页面查看 CPU - 点击下一页查看 CPU - 非常有条不紊并且耗时,但如果您无法通过一些代码跟踪找到它,您可能会不走运 -
我们能够使用 IIS 日志文件将其跟踪到一组可疑页面 -
希望有帮助!
这充其量只是猜测,但也许您的开发团队正在以调试模式而不是发布模式构建和部署应用程序。这将导致 .pdb 文件的出现。这意味着您的应用程序将在系统执行期间占用额外的资源来收集系统状态和调试信息,从而导致更多的处理器利用率。
因此,确保它们在发布模式下构建和部署就足够简单了。
这是一个非常古老的帖子,我知道,但这也是一个常见问题。所有建议的方法都非常好,但它们总是指向一个进程,而且我们很可能已经知道我们的网站正在出现问题,但我们只想知道哪个特定页面在处理上花费了太多时间。在我看来,最精确和最简单的工具是 IIS 本身。
如果您确定加载需要时间的页面,请使用 SharePoint 的开发人员仪表板查看哪个组件需要时间。