【发布时间】:2012-01-03 00:29:40
【问题描述】:
我正在使用 dotTrace Performance 4.5 来分析 .NET 3.5 C# Web 应用程序。当我记录一个“用户请求”(页面加载)时,我看到 11 个线程的时间大致相同,均为 7644 毫秒。
- 大部分线程描述仅包含: 100% [本机或优化代码] - 7644 毫秒
-
有人说: 100%
Microsoft.VisualStudio.WebServer.WebServerApp.Main(String[]) -
最后一条是:
- 86%
System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object) - 14%
PerformWaitCallback(1094 毫秒) >> 12% =ProcessRequest
- 86%
你能告诉我吗:
- 为什么会有这么多线程? (图片资源、AJAX、JavaScript)
- 什么是
PerformWaitCallback? - 为什么只有 1094 毫秒的工作需要 7644 毫秒?
【问题讨论】:
-
您是否只测量 一个 请求?您应该启动应用程序并运行 多个 请求;启动 Web 应用程序会产生固有的开销。
-
我在分析一个请求之前“加热”了应用程序。如果我运行多个请求(N x 8 秒),我会得到类似的结果。
-
可能取决于您使用的是 IIS、IIS Express 还是 Web 开发服务器。
-
此跟踪是使用 WebDevServer 进行的。
-
为了更好地测试使用 IIS,RedGate 还有一个非常有用的内存分析器 ANTS Profiler,我更喜欢使用它
标签: c# asp.net profiling profile dottrace