.NET GC 实时监控工具 dotnet gcmon 介绍

7a40e443ea89a54f662a42344819b16a.png

今天介绍一个新的诊断工具 dotnet-gcmon, 也是全局 .NET CLI 工具, 它可以监控到 .NET 程序的 GC, 能获取到的信息也很详细, 另外 maoni 大佬也是其中的开发者之一。

安装 gcmon

和其他的 dotnet 诊断工具一样, 你可以使用以下命令,进行全局安装

dotnet tool install -g dotnet-gcmon

参数介绍

参数描述
n进程名, dotnet 应用的进程名
p进程ID, dotnet 应用的 Process ID
m最小 GC 暂停持续时间(以毫秒为单位),可选
c指定一个 yaml 配置文件路径, 可选

使用

使用非常简单, 我们需要指定被监控的 dotnet 应用的进程名或者是进程ID (PID), 这里也可以使用另外一个诊断工具 dotnet-trace, 安装命令如下

dotnet tool install -g dotnet-trace

然后运行 dotnet trace ps 获取所有的 dotnet 进程

e0fd77cca3aa1e8162d99d4c45b6e79a.png

接下来, 运行 dotnet gcmon -p 21904, 开始监控 dotnet 应用, 诊断工具会输出下面的信息

1e976d5220e9e7f73988b694045c372e.png

在诊断工具运行的时候, 按下 s 键, 会输出当前 GC 的整体和每一代的状态

c47a52687496717e2cf2052f95a599f7.png

另外还可以使用 yaml 配置文件, 灵活配置诊断工具输出列,具体可以参考 github。

总结

dotnet gcmon 是一个小而实用的诊断工具, 并且还在迭代中, 在对于代码无侵入的情况下, 排查问题还是很方便的, 另外 .NET 现在已经有近十个诊断工具了!

gcmon 的工作原理是什么呢? 其实主要是调用了 CLR 运行时团队提供的一个诊断库, Microsoft.Diagnostics.NETCore.Client, 这个库功能就非常强大了, 各种运行时信息都可以拿到, 当然你也可以用它实现一个诊断工具, 这个库是基于 EventPipe, IPC 等实现的, 还是很复杂的, 最后希望本文对您有用!

https://github.com/Maoni0/realmon

7d937dc6808a804202d6cfe38a84fb92.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值