English 中文(简体)
ASP.Net IIS7获取每个请求的CPU使用情况
原标题:ASP.Net IIS7 Obtaining CPU usage per request

我有一个运行在生产服务器上的asp.net应用程序。

服务器上的cpu使用率非常高,达到80-90%。

然而,每个请求似乎不会花费太长时间,除非cpu达到100%的峰值。

我需要获得一些分析数据,以确定高cpu使用率是由于少量高cpu请求造成的,还是由于一般的高负载造成的。

我可以在机器上添加更多内核,也可以在应用程序上进行网络农场,但我需要证据来证明任何成本的合理性和未来的性能。

有没有一种方法可以将每个页面请求的CPU使用情况记录到文件中?

问题回答

实际上,您不能使用计数器直接确定单个请求的CPU利用率。ASP.NET请求由工作进程处理,工作进程的负载分布在所有可用的CPU核心上。您可以测量每个核心或整个进程的CPU利用率,但不能测量每个请求的CPU利用度。

您可以使用IIS7高级日志记录间接隔离CPU不足的请求。您可以从此处。阅读此博客了解如何启用自定义日志记录。您需要添加“CPU利用率”字段添加到日志定义。新的IIS日志文件将显示每个请求行的CPU利用率。然而,这不是请求处理的实际CPU利用率,而只是处理请求期间的CPU利用率。您仍然可以使用这些信息来确定可能会占用CPU的可疑请求。

通过负载测试进一步单独测试这些请求,看看它们中是否有任何一个在合理的负载下造成过多的CPU使用。Microsoft负载测试工具包含在VSTS 2010 Ultimate edition或VSTS 2008 Test edition或Team Suite中。或者,您可以使用WCAT–一个免费的Microsoft命令行HTTP负载生成器。此外,我们还开发了一个用于负载测试的免费Fiddler扩展,名为StresStimulus,它使用各种负载模式回放Fiddler会话并绘制性能指标图。

在生产中运行负载测试时要小心。您可以在所需的负载下运行每个请求几秒钟。如果找不到未优化的页面,请使用此因素来证明硬件升级的合理性。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签