如何在生产环境中监控.NET 7应用的基础性能指标?
无Visual Studio环境下获取.NET应用性能指标(管理员操作指南)
针对旧版.NET性能计数器失效的问题,以下是几种无需Visual Studio、无需开发者参与,系统管理员可独立操作的监控方案:
一、使用dotnet-counters(.NET官方命令行工具)
这是微软官方提供的轻量级性能监控工具,支持实时查看和导出.NET应用的核心指标。
- 安装工具:以管理员身份打开命令提示符/PowerShell,执行:
若已安装,可更新至最新版本:dotnet tool install --global dotnet-countersdotnet tool update --global dotnet-counters - 定位目标进程:列出当前运行的所有.NET进程,找到目标应用的PID:
dotnet-counters ps - 实时监控核心指标:针对目标PID启动监控,默认包含GC回收、堆内存、线程争用等关键数据:
如需监控Web应用的额外指标,可追加dotnet-counters monitor --process-id <目标PID> --counters System.RuntimeMicrosoft.AspNetCore.Hosting计数器组。 - 导出数据至文件:将监控数据导出为CSV格式,方便后续分析:
dotnet-counters collect --process-id <目标PID> --output DotNetPerfData.csv --counters System.Runtime
二、使用Windows内置ETW工具(无需额外安装)
利用Windows事件跟踪(ETW)机制,系统自带工具即可捕获.NET运行时的性能事件,适合批量或脚本化操作。
- 图形化操作(事件查看器):
- 打开「事件查看器」,右键点击「自定义视图」→「创建自定义视图」
- 切换到「事件跟踪会话」标签,点击「添加」,输入提供者名称
Microsoft-Windows-DotNETRuntime并选择 - 在「事件ID」中勾选需要的监控项:比如GC开始/结束(ID 100/101)、线程争用(ID 102),完成后保存视图即可实时查看事件
- 命令行操作(logman):
- 创建ETW跟踪会话:
(掩码logman create trace DotNetPerfSession -p "Microsoft-Windows-DotNETRuntime" 0x8000000000000010 -o C:\DotNetPerf.etl0x8000000000000010对应GC和线程争用事件,可根据需求调整) - 启动会话:
logman start DotNetPerfSession - 停止会话(完成监控后):
logman stop DotNetPerfSession - 解析ETL文件为CSV:
tracerpt C:\DotNetPerf.etl -o C:\DotNetPerfReport.csv
- 创建ETW跟踪会话:
三、使用PerfView(绿色版图形化工具)
微软官方推出的.NET性能分析工具,绿色免安装,适合需要可视化分析的场景。
- 下载PerfView的绿色压缩包,解压至任意目录(无需安装)
- 运行
PerfView.exe,点击顶部菜单「Collect」→「Collect」 - 在弹出的配置窗口中,勾选「.NET GC」和「.NET Contention」选项,指定报告输出目录,点击「Start Collection」
- 监控一段时间后,点击「Stop Collection」,PerfView会自动生成分析报告,可直观查看GC回收次数、堆内存变化、线程争用热点等数据
内容的提问来源于stack exchange,提问作者Boppity Bop
相关产品推荐
相关产品推荐

