.NET Core服务Windows性能监视器缺失CLR计数器问题咨询
查看Perfmon支持的.NET Core计数器
可以通过两种方式快速查看可用的.NET Core性能计数器:
使用
dotnet-counters工具
这是.NET SDK自带的命令行工具,无需额外安装。执行以下命令:- 列出所有全局可用的.NET计数器类别:
dotnet counters list - 查看当前运行的.NET进程:
dotnet counters ps - 针对特定进程实时监控计数器:
dotnet counters monitor --process-id <你的服务PID>
- 列出所有全局可用的.NET计数器类别:
通过Perfmon界面筛选
打开性能监视器(perfmon),点击「添加计数器」按钮,在「性能对象」下拉列表中查找带有.NET Core前缀的类别,这些就是Perfmon支持的.NET Core计数器集合。
获取
.NET Core Locks and Threads类计数器(对应原.NET CLR LocksAndThreads) 你找不到.NET CLR LocksAndThreads是因为.NET Core的计数器命名和.NET Framework不同,对应的类别是.NET Core Locks and Threads,操作步骤如下:
确认计数器启用状态
.NET Core 3.0及以上版本默认启用性能计数器,无需额外配置。如果是更早版本,需要通过环境变量DOTNET_ENABLE_PERFORMANCE_COUNTERS=true启用,或者在服务的配置文件中添加对应配置。在Perfmon中添加对应计数器
- 打开perfmon,点击「添加计数器」。
- 在「性能对象」中选择
.NET Core Locks and Threads。 - 在计数器列表中选择你需要的项(比如
Contention Rate / sec、Current Queue Length等)。 - 在「实例」列表中选择你的服务名称(或对应进程ID的实例),点击「添加」后即可在perfmon中查看数据。
用
dotnet-counters命令行查看- 先通过
dotnet counters ps获取服务的PID。 - 执行以下命令监控锁和线程相关的计数器:
dotnet counters monitor --process-id <你的服务PID> ".NET Core Locks and Threads"
- 先通过
注意:如果你的服务以Windows服务身份运行,确保运行账户拥有「性能监视器用户」组权限,否则可能无法正常读取计数器数据。
内容的提问来源于stack exchange,提问作者SaliaMun
相关产品推荐
相关产品推荐

