如何使用 Visual Studio 2017 性能配置文件 ASP.NET IIS Web 应用程序?

How to Performance Profile ASP.NET IIS web application with Visual Studio 2017?

我有一个 ASP.NET 网络应用程序,与 Visual Studio 的 IIS Express 相比,某些操作在服务器上的完整 IIS 8.5 中执行速度慢 6 倍。

如果我只是为了调试而尝试附加,我会正确地看到 w3wp.exe

我在 Profiler 的附加对话框中看不到 w3wp.exe

我是 运行 VS 2017,具有管理员权限。这不是远程调试方案,full-fledged IIS 和调试工具都在同一台服务器上(Windows Server 2012 R2 Essentials 如果重要的话)。我正在使用 Visual Studio 2017 社区版。

如何在 IIS 中调试我的应用程序,以便弄清楚为什么它在那里慢了 6 倍?这让我感到震惊,因为通常情况恰恰相反:调试和配置文件版本比发布版本慢得多。

顺便说一句,我们的服务器内存非常有限。有两个开发人员同时工作,16GB 物理内存(不幸的是无法升级)很容易被超过。所以我猜常规的 IIS 正在被所有开发人员工具、SQL 服务器等占用内存。这可能是速度缓慢的原因,但我不想要猜谜游戏,我想看看个人资料 session。剖析 VS 的 IIS Express 超级容易顺便说一句。如果我没看错 Visual Studio 2015 年甚至没有提供 运行 流程的分析。


Rob 非常简洁。首先,您需要以管理员模式启动 Visual Studio。除了一开始 selecting ASP.NET 作为分析目标之外,一旦分析向导出现在第 2 页上,您必须再次 select "An ASP.NET application" 而不是您的可用项目,否则Visual Studio 刚刚启动服务器。之后,在第 3 页(共 4 页)上,我通过本地(非开发人员)IIS 服务器 (http://localhost:8000) 指定了应用程序 运行 的 Web URL。如果你还没有这样做,你必须在管理员模式下重新启动 VS。如果 VS 启动了另一台服务器,那么性能输出看起来像:

Preparing web server for profiling.
Profiling started.
Launching web server with profiling.
Profiling process ID 872 (w3wp).
Starting data collection. The output file is C:\Users\Csaba\Documents\MyProjectSrc\http_localhost_8000__170924.vspx
Profiling process ID 8416 (iexplore).
Attaching to process 8416.
Profiler stopping.
Stopping data collection.
Merging collection data. Please wait...
Data is saved in file C:\Users\Csaba\Documents\MyProjectSrc\http_localhost_8000__170924.vspx
Profiling finished.

在数据 collection 之后,我在事件日志中看到一些虚假错误,指出 collection 不会成功。看起来它能够从 3rd 方库中收集数据。但我不能保证它100%合法,因为我这次没有仔细检查。

选择分析目标时选择"ASP.NET"而不是"Running Process..."。

我 运行在尝试 运行 Profiler 时遇到了一些问题(特别是因为 windows 家庭版默认情况下没有完整的 IIS 设置)

由于您是 运行宁 Visual Studio 2017 年,运行 新的诊断工具可能会容易得多。

诊断工具位于

Debug->Windows->Show Diagnostic Tools

它像分析器一样提供 Cpu 分析和内存分析。
您也可以设置断点并分析一小段代码。