dotTrace 是一款 .NET 应用程序性能分析器,可以直接在 Visual Studio/JetBrains Rider 中运行,并提供检测和分析性能瓶颈的出色方式。阅读以获得更多详细信息。
dotTrace 可以帮助您分析各种 .NET 应用程序的性能瓶颈,包括桌面应用程序、.NET Core、托管在 IIS 或 IIS Express web 服务器上的 ASP.NET 应用程序、Mono 与 Unity 应用程序、WCF 服务、Windows 服务、通用 Windows 平台应用程序和单元测试。
使用 dotTrace,您可以分析基于任何受支持版本的 .NET Framework、.NET Core、.NET、Mono 5.10 或更高版本以及 Unity 2018.3 或更高版本的应用程序。
不同于“经典的”性能分析只衡量调用执行时间,Timeline 分析可以揭示调用的时间分布。
通过将方法调用数据绑定到时间线,此分析模式远不止仅检测最慢的方法:它可以诊断事件顺序至关重要的性能问题,例如,UI 死机、过度垃圾回收、工作负载分布不平衡、低效的文件 I/O 等。
不过,dotTrace 仍可使用传统的分析模式。 Sampling 分析是评估应用程序整体性能的最简单方法,而 Tracing 和 Line-by-line 分析模式则非常适用于需要详细了解特定算法内部运行效果的情况。
您可以使用筛选器、调用树或图表划分分析数据。通过应用筛选器,您可以获得由特定条件选择的一组时间间隔。其运作方式非常类似于在数据库上执行查询来获得恰好需要的数据。
例如,要查找是否因阻塞垃圾回收导致 UI 死机,您可以要求 dotTrace 在主线程上选择发生 UI 死机且执行了阻塞垃圾回收的所有时间间隔。虽然听起来很复杂,但实际上只需点击两下即可切换这个筛选器组合。
dotTrace 与 Visual Studio 集成,帮助您无需离开 IDE 即可开始分析当前开发的应用程序。使用 Rider 中的 dotTrace 插件,您可以执行有时间限制的性能分析,分析 static 方法、单元测试、正在运行的进程、远程应用程序等。
它与 Visual Studio 和 JetBrains Rider 集成使分析体验几乎无缝,因为您不再需要在 IDE 与分析器之间切换。
dotTrace 使您可以轻松分析异步代码:async 调用的所有“部分”都在一个地方显示,因此您不必在不同的调用堆栈中搜索它们。
dotTrace 使您可以即时分析代码中的任何静态方法。只需将脱字符号放在方法上,按 Alt+Enter,并从操作列表中选择 Debug | Profile。
试想一下这个功能可以做什么。您可以在编写完代码后就地分析代码的任何部分!无需生成解决方案,在分析器中运行,执行运行新代码的用法场景,等等。
大多数情况下,您需要分析本地运行的应用程序。但如果您面临远程 web 服务器上的滞后应用程序呢?
dotTrace 可以连接到远程计算机来分析独立或 web 应用程序,或 Windows 服务。您甚至无需在远程计算机上安装 dotTrace:只需复制几个文件即可。
dotTrace 可以连接到运行中的应用程序来执行分析,并在捕获分析数据后立即分离。
这样就最大程度地减少了在分析器下运行应用程序带来的开销。更重要的是,如果您无法承受每次需要分析就重启应用程序,它可以在生产环境中调查性能问题。
如果您有 Visual Studio + ReSharper* 捆绑包或 JetBrains Rider**,可以从代码编辑器或单元测试运行程序轻松地开始分析单元测试。
* 即使没安装 ReSharper,您仍然可以分析 NUnit、MSTest 或 xUnit 提供的原生单元测试运行程序。
** 只有 dotUltimate 或 All Products Pack 许可证所有者可以使用分析功能。
分析 Timeline 分析快照时,您可以筛选 web 应用程序处理传入 HTTP 请求的时间间隔。获得确切的数据,确定确切的根本原因,并将运行缓慢的方法调整归零。通过 Timeline 分析加快 web 应用程序。
使用 Timeline 分析了解每条查询如何影响应用程序性能。 SQL Queries 筛选器可以显示所有 SQL 查询和 SQL 连接及其性能统计数据。
为方便起见,可以在单独的窗口中打开查询内容,进行深入分析。您仍可以通过选择一条或多条查询来筛选所有数据,并调查执行它们的方法。
再也没有低效的 SQL 查询!
Profiling SDK 使您可以直接从代码中控制分析会话:以编程方式开始和停止收集分析数据,保存收集的快照,等等。
这样可以实现两个有价值的使用场景。首先,您可以使用 SDK 来缩小分析范围,并选择分析哪部分代码。第二个使用场景是自分析应用程序:您可以收集统计数据,显示您的应用程序在终端用户计算机上的行为。
dotTrace 附带命令行分析工具,可用于自动收集分析快照,如果您希望分析成为您的持续集成生成的一部分,此快照将非常有用。
如果您将 JetBrains TeamCity 用作 CI 服务器,请确保将 dotTrace 插件安装到 TeamCity。该插件通过分析集成测试帮助您防止应用程序性能退化。您只需设置测试执行时间的阈值,如果超过阈值,该插件将自动抓取性能快照并让测试失败。
有时,花数小时优化一个费时间的函数后,开发者必须从头开始分析以查看优化是否真的有效。
这对 dotTrace 而言不成问题。性能分析器可以根据您设置的时间调整,立即重新计算快照中的所有函数时间,无需重新分析您的应用程序。就像询问分析器:“如果我将此函数优化 40% 怎么样?”只需为某个函数或特定类中的所有函数指定新时间。将重新计算整个快照的时间值。
dotTrace 可以比较同一应用程序的任意两个性能快照。它会生成比较快照, 其中将显示每个函数的调用次数和消耗时间的差异。可以像普通性能快照一样查看和分析比较快照。