问题检测
在 Windows 上, 监测 工具可以自动检测应用程序中各种类型的运行时性能问题。 它在调试或正常运行期间执行,并识别潜在问题,例如 UI 假死、长时间运行的数据库命令或缓慢的 ASP.NET Core 请求。
检测到的问题会显示在 检测到的问题 的 监测 工具窗口中,您可以在此查看它们,导航到相关代码,或使用集成的 dotTrace Profiler 分析引发问题的方法。

dotUltimate 许可证要求
问题检测对所有用户开放。 但在 dotTrace 中进行详细问题分析需要 dotUltimate 或 All Products Pack 许可证。
没有许可证时,问题报告只包含问题类型和指标值(不包含方法和类型名称)。

问题类型和默认阈值
监控会检测多种问题类型。 每种问题类型都有一个可配置的阈值。 当其指标超出阈值时,问题会在 监测 工具窗口中报告。 您可以在 中自定义这些阈值。
基础性能问题
性能热点 — 一个时间区间,其中一个或多个用户方法消耗了总执行时间的显著部分。 默认阈值:500 毫秒。
UI 冻结 — UI 响应超过指定阈值的区间(期间未传递或处理任何窗口消息)。 默认阈值:500 毫秒。
高垃圾回收活动 — 指定百分比的总执行时间用于垃圾回收的时间区间。 频繁的 GC 活动可能表示应用程序存在内存压力或过度内存分配。 默认阈值:20%。
数据库问题
数据库命令缓慢 — 执行时间超过阈值的数据库命令。 默认阈值:1000 毫秒。
数据库命令过多 — 重复执行相同数据库命令(例如,N+1 查询模式)。 默认阈值为 100 条命令。
数据库结果集过大 — 返回记录数量超过阈值的数据库命令。 默认阈值为 1000 条记录。
数据库连接过多 — 打开过多并发数据库连接的代码。 默认阈值为 50 个连接。
ASP.NET Core 问题
MVC 操作缓慢 — 执行时间超过阈值的控制器操作。 默认阈值:1000 毫秒。
Razor 页面处理程序缓慢 — 执行时间较长的 Razor 页面处理方法(例如,
OnGet、OnPost)。 默认阈值:1000 毫秒。Razor 视图组件缓慢 — 视图组件中的
Invoke()或InvokeAsync()方法运行缓慢。 默认阈值:1000 毫秒。
分析检测到的问题
监测 工具可让您更详细地分析检测到的问题。 您可以右键点击任意问题以执行以下操作:
分析问题 — 在编辑器中查看问题详细信息。

选择问题范围 — 在监控时间线上选择问题的时间范围。 选择区间后,点击
分析所选时间范围 按钮,位于 图表 选项卡顶部。 此操作会在 dotTrace 工具窗口中打开问题的时间范围,您可以在此查看调用树和事件数据。 了解如何使用 dotTrace 分析数据导航到 {method-name} — 跳转到引发问题的方法。
配置问题检测
监测 在事件的指标超过配置阈值时将其视为问题。 您可以更改阈值或禁用某些问题类型。
打开 。
使用复选框启用或禁用各个问题类型。
根据项目的性能目标调整阈值。
静音问题
如果 监测 检测到的一个问题并非真正的问题,例如误报、不受您控制的代码,或过于轻微而不值得调查的情况,您可以将其静音。 当您将某个问题设为静音时, 监测 会添加一个筛选器,用于在后续运行中将其对应的代码排除在分析之外。
您可以在设置中手动创建此类筛选器,或直接通过 检测到的问题 列表创建。
要从 检测到的问题 列表中将某个问题设为静音:
在 检测到的问题 列表中右键点击该问题。
请选择 忽略问题。 这将根据方法名称创建一个筛选器。
您可以在 代码分析的排除范围 部分的 页面中查看或更改已创建的筛选器。
要手动创建或管理筛选器:
打开 。
在 代码分析的排除范围 部分,按进程、模块、类或方法添加或移除筛选器。 您也可以删除已有的筛选器,从而“取消静音”之前设为静音的问题。