我当前正在处理的 ASP.NET Web 应用程序项目随着时间的推移重新加载速度越来越慢(在 IIS 或 .NET 开发服务器中)。目前需要:
- 通过 F5 调试加载需要 1 分 28 分钟
- 构建后(而非重建)在浏览器中刷新需要 41 秒
机器速度相当快 - Core 2 Quad 2.40ghz、8 GB RAM,在 HyperV 下运行开发机器,并为开发虚拟机分配了 2 GB RAM。
有没有办法跟踪/报告初始加载的整个周期?如果我能看到基本 IIS 工作进程启动、加载 DLL、运行实际 .NET 代码需要多长时间,那就太好了。
我知道我可以在代码上使用分析器 - 它没有出现任何超慢的数据库连接建立时间,但我想在处理实际页面之前对这些东西的性能有一些了解。我可以看到 CPU 监视器在进程中间的一段时间内达到 100%,RAM 使用率略有上升 - 但我正在寻找更好的洞察力,希望能稍微调整一下。
虽然我在项目开始时(4 个月前)没有进行任何测量,但我完全确定重新加载相对轻而易举。
非常感谢任何帮助, 程序员在构建发生时只能喝这么多咖啡。
更新:
JetBrain 的 dotTrace 非常出色(对于本例),谢谢。它具有启动 Web 项目的完美界面,并很快突出显示大部分时间都花在 Application_Start()(在 Global.asax 中)中。
其他选项不会选择此选项,因为:
Trace选项仅从 PreInit,缺少 Application_Start() 调用。
StopWatch 调用将有 要求我知道去哪里寻找,或者 回到过去的美好时光 printf 风格的调试...
nprof 想要定位一个 .exe,该文件 尝试附加到新的 w3wp.exe 实例时会错过目标区域...
最佳答案
为什么不使用 ASP.NET Trace 功能。使用trace.axd来分析请求。
这可能有用:
关于asp.net - ASP.NET 应用程序加载时间缓慢 - 我可以跟踪/追踪/计时整个加载周期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1692143/