问题检测
在 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} – 转到导致该问题的方法。
配置问题检测
监测 会在事件的指标超过配置的阈值时,将其视为问题。 您可以更改阈值或禁用某些问题类型。
打开 。
使用复选框启用或禁用各个问题类型。
根据您的项目性能目标调整阈值。
将问题静音
如果 监测 检测到您不认为是真正问题的问题,例如误报、不受您控制的代码或轻微到无需调查的情况,您可以将其静音。 当您将某个问题静音时, 监测 会添加一个过滤器,指示其在后续运行中将相应代码排除在分析之外。
您可以在设置中手动创建此类过滤器,或直接从 检测到的问题 列表创建。
要在 检测到的问题 列表中将问题静音:
在 检测到的问题 列表中,右键单击该问题。
请选择 忽略问题。 这将按方法名称创建一个过滤器。
您可以在 页面中的 代码分析的排除范围 部分查看或更改已创建的过滤器。
要手动创建或管理过滤器:
打开 。
在 代码分析的排除范围 部分,按进程、模块、类或方法添加或移除过滤器。 您还可以删除现有过滤器以 "取消静音" 先前静音的问题。