我在使用Web应用程序时遇到了一些性能问题。此应用程序池的CPU使用率可能超过90%。我注意到的正常用法是30%。
我使用Debug Diagnostic工具监视此应用程序的CPU使用情况,我发现SNIReadSyncOverAsync是问题所在。我没有关于我的应用程序或页面上的哪个函数在调用SNIReadSyncOverAsync后面的任何其他详细信息。我需要知道的是哪个页面占用了我应用程序中最多的CPU。
您是否知道如何监控每个页面的效果?
答案 0 :(得分:1)
我认为你也可以使用perfmon(性能监视器)。你可以从Start开始调用它 - >运行 - > PERFMON.EXE。 您可以设置计数器并查看使用哪个页面有一个峰值。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa645516(v=vs.71).aspx
答案 1 :(得分:0)
您是否知道如何监控每个页面的效果?
是的,有一种方法可以使用 Windows性能记录器查看生产环境中的CPU消耗情况。例如,
在有问题的服务器上,在提示符下运行以下命令
wpr -start DotNET
当执行相关代码时,请运行
wpr -stop DotNET
然后使用 Windows性能分析器,您可以分析WPR创建的ETL文件。有关详细信息,请参阅Microsoft的Channel9。
或者,您也可以使用 PerfView 来捕获花费时间超过预期的请求。例如,
perfview collect -StopOnRequestOverMsec:3000 -ThreadTime -Merge:true -Zip:true -LogFile:perfviewlog.log -CircularMB:512 -DataFile:LongRequest.etl
然后使用PerfView分析堆栈信息。