dotnet中的counter
打造一个完善的软件产品,准确完整实现业务是第一步,再有就是有优秀的性能,稳定的运行。为了能量化性能指标,需要利用工具,来收集这些数据,以便对产品作出代码级调整。
先说一下.net中带 一个全局工具:dotnet-counters ,它 是一个性能监视工具 ,用于临时运行监视和初级性能调查 。 它可以对运行中的dotnet程序监控,对于监控指标的收集,可以采用实时监控(montitor),也可以指定文件收集(collect)。
可以用下面的命令查看本地安装的所有dotnet tools
dotnet tool list --global
我本地的结果:
如果没有安装dotnet-counters可以用下面的命令安装
dotnet tool install --global dotnet-counters
查看运行的dotnet程序
dotnet-counters ps
我的显示结果,可以看到应用的进程ID,应用名称,所在路径
查看可以收集的计数器信息
dotnet-counters list
输出了可以监控的指标,关于这些指标,后面再细说
.net 5的可收集计数器信息
dotnet-counters list --runtime-version 5.0
收集监控指标
dotnet-counters collect -n webapi
counter.csv收集到的监控指标数据,之后都是间隔一定时间的重复项目
选项 |
描述 |
-p|--process-id <PID> |
要从中收集计数器数据的进程的 ID |
-n|--name <name> |
要从中收集计数器数据的进程的名称。 |
--diagnostic-port |
要创建的诊断端口的名称。 |
--refresh-interval <seconds> |
更新显示的计数器之间延迟的秒数 |
--counters <COUNTERS> |
计数器的逗号分隔列表。 |
--format <csv|json> |
要导出的格式。当前可用的格式:csv 和 json。 |
-o|--output <output> |
输出文件的名称。 |
-- <command> | 可执行命令,直接运行就用并且监控:dotnet-counters monitor --refresh-interval 1 -- dotnet WebAPI.dll |
实时监控指标
dotnet-counters monitor -n webapi --refresh-interval 3
每隔3s刷新一次指标
选项 |
描述 |
-p|--process-id <PID> |
要从中收集计数器数据的进程的 ID |
-n|--name <name> |
要从中收集计数器数据的进程的名称。 |
--diagnostic-port |
要创建的诊断端口的名称。 |
--refresh-interval <seconds> |
更新显示的计数器之间延迟的秒数 |
--counters <COUNTERS> |
计数器的逗号分隔列表。 |
-- <command> | 可执行命令,直接运行就用并且监控:dotnet-counters monitor --refresh-interval 1 -- dotnet WebAPI.dll |
注意:
windows下使用--diagnostic-port方法,拿dotnet应用webapi.dll举例
1、在一个命令行里输入
dotnet-counters monitor --diagnostic-port webapi.app
会提示如下 信息:
Waiting for connection on webapi.app
Start an application with the following environment variable: DOTNET_DiagnosticPorts=webapi.app
2、在一个 新的 命令行里,用命令
set DOTNET_DiagnosticPorts=webapi.app
再启动webapi应用
dotnet webapi.dll
会看到第一个命令工具开始监控:
喜欢就来个三连,让更多人因你而受益
- EF Core 6 新功能汇总(一)
- C# 日志管理框架:Common.Logging和log4net
- c#屏幕录制(经典)(含源码和AForge.Video.FFMPEG.DLL)及填坑办法
- SSL泛域名证书申请和配置
- 关于async和await的探讨
- 值得永久收藏的 C# 设计模式套路(三)
- C# 线程的基本操作(一)
- C# 将多个图片合并成TIFF文件的两种方法(续集)
- C#索引器
- REST 深度进阶
- 再来说说我喜欢的 Dotnet 5.0 & C# 9
- 字符串池化的妙用
- Minimal API Todo Sample
- Dotnet 6.0,你值得拥有
- 递归优化的这三种方式你知道吗?
- C#基础知识之base、this、new、override、abstract梳理
- C# =>符号的使用
- 使用 ML.NET 进行保险价格预测
- dotnet中的counter
- 剖析依赖属性