首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >工作进程占用较高的CPU%

工作进程占用较高的CPU%
EN

Stack Overflow用户
提问于 2011-04-16 01:34:12
回答 3查看 5.8K关注 0票数 3

我的所有网站都托管在IIS中,并配置了一个应用程序池。此应用程序池由10个正在运行的网站组成。

直到今天,它都工作得很好,但是突然我发现CPU使用率有一个突然的上升和下降。我找不到问题所在。

有没有办法检查应用程序池中的所有网站中哪个网站的负载较大?

EN

回答 3

Stack Overflow用户

发布于 2011-04-16 19:59:33

性能计数器、任务管理器和本机代码分析工具只说明了故事的一部分。为了更深入地了解你的ASP.NET应用程序内部发生了什么,你需要使用WinDBG,SOS和ADPlus。

Tess Ferrandez有一系列很棒的文章来追踪这里的罪魁祸首:

.NET Debugging Demos Lab 4: High CPU hang

.NET Debugging Demos Lab 4: High CPU Hang - Review

这是一个真实的例子:

High CPU in .NET app using a static Generic.Dictionary

您可能希望将您的站点分离到单独的应用程序池中,以便识别和隔离导致高CPU的站点(但看起来您已经有了一个可疑的站点,所以我将其隔离)。从那时起,你就可以按照Tess的建议和指导来追查原因了。

您还应该查看日志,看看您是否遇到了意外的流量激增或增加。也许有一个行为不端的搜索引擎网站索引器钉住了网站。如果是这种情况,那么您可能需要(如果您还没有这样做)创建一个robots.txt,以防止爬虫对站点中不需要索引的部分进行索引。最重要的是,如果某些爬虫过于放荡,那么就禁止它们。也许可以考虑一个sitemap,让google来驯服和调整它的活动。

票数 1
EN

Stack Overflow用户

发布于 2011-04-16 13:04:49

如果您的服务器已达到其最大容量,您将看到CPU不稳定地上升和下降,因为GC将开始尝试恢复资源(cache..etc),这反过来会导致您的站点更加努力地工作。这是一个无尽的循环。

您是否一直在监控您的性能计数器?你知道你的网站的正常容量是多少吗?如果你不能回答这些问题,我建议你尽快收集一些性能数据。

我的经验法则是总是先测量,然后进行必要的改变。

大多数情况下,性能瓶颈并不是您所认为的那样。

票数 0
EN

Stack Overflow用户

发布于 2011-04-16 14:24:33

实际上没有性能计数器的方法可以判断,因为CPU计数器处于进程级别。最好的办法是与事件日志和.NET/ASP.NET计数器中的其他事件建立时间关联,以便进行垃圾收集、请求等。

如果你真的想成为硬核,你可以使用SysInternals工具集来拍摄你的应用程序池的快照,然后进行后期分析,找出峰值发生时执行了哪些代码。这里有一个来自Mark Russinovich的博客- http://blogs.technet.com/b/markrussinovich/archive/2008/04/07/3031251.aspx的相关例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5680332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档