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

dotUltimate 许可要求
所有用户都可使用问题检测功能。 但在 dotTrace 中进行详细的问题分析需要 dotUltimate 或 All Products Pack 许可。
没有许可时,问题只会显示问题类型和度量值(不包含方法和类型名称)。

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

选择问题范围—— 在监控时间线上选择问题的时间范围。 选择范围后,点击
分析所选时间范围 按钮,该按钮位于 图表 标签顶部。 这将在 dotTrace 工具窗口中打开问题时间范围,您可以在其中查看调用树和事件数据。导航到 {method-name}—— 前往导致该问题的方法。
配置问题检测
当事件的指标超过配置阈值时, 监测 会将该事件视为问题。 您可以更改阈值或禁用某些问题类型。
打开 。
使用复选框启用或禁用单独的问题类型。
根据您的项目性能目标调整阈值。
静默问题
如果 监测 检测到您认为不是实际问题的问题,例如误报、您无法控制的代码或不值得调查的小问题,您可以将其静默。 当您将问题静默时, 监测 会添加一个过滤器,告知其在将来的分析中排除相应代码。
您可以在设置中手动创建此类过滤器,或直接从 检测到的问题 列表中创建。
要从 检测到的问题 列表中将问题静默:
在 检测到的问题 列表中,右键点击该问题。
选择 忽略问题。 这会按方法名创建一个过滤器。
您可以在 代码分析的排除范围 部分的 页面中查看或更改已创建的过滤器。
要手动创建或管理过滤器:
打开 。
在 代码分析的排除范围 部分,按进程、模块、类或方法添加或删除过滤器。 您还可以删除已存在的过滤器,以“取消静默”先前静默的问题。