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