2

我在使用 Web 应用程序时遇到了一些性能问题。此应用程序池的 CPU 使用率可以超过 90%。我注意到的正常使用量是 30%。

我使用调试诊断工具来监控这个应用程序的 CPU 使用率,我发现 SNIReadSyncOverAsync 是问题所在。我没有关于我的应用程序或页面上的哪个函数在调用 SNIReadSyncOverAsync 背后的任何其他详细信息。我需要知道的是我的应用程序中哪个页面消耗的 CPU 最多。

您知道如何监控每个页面的性能吗?

4

2 回答 2

1

我认为您也可以使用 perfmon(性能监视器)。您可以从开始 -> 运行 -> Perfmon.exe 调用它。您可以设置计数器并查看使用哪个页面出现峰值。有关更多详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa645516(v=vs.71).aspx

于 2013-09-04T18:57:34.860 回答
0

您知道如何监控每个页面的性能吗?

是的,有一种方法可以通过使用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 分析堆栈信息。

于 2017-05-30T04:33:06.563 回答