起因
本文讲的诊断工具,主要是针对.Net Core 3.1(个别功能不支持)及之后的版本,如.Net 5/.Net 6,对早期的.Net Framework是完全不支持的.即使是.Net Core 3.0之前的版本也不支持,是因为这些工具多数依赖EventPipe组件,EventPipe是CoreCLR的一部分,当然Mono也在增加对EventPipe的支持,所以是支持跨平台的.
这些诊断工具能帮我干什么?
快速定位问题,分析性能瓶颈在哪里可以分析GC,根据内存分配针对性的进行调优.统计数据,如Socket发送的数据/Http连接数等
用数据说话,更容易定位问题,更快的解决问题
在.Net 5 所支持的诊断工具,有dotnet-counters,dotnet-trace,dotnet-dump,dotnet-gcdump等
如何注册安装工具
#安装监视工具
dotnet tool install -g dotnet-counters
#安装转储工具
dotnet tool install -g dotnet-dump
#安装gc转储工具
dotnet tool install -g dotnet-gcdump
#安装trace收集事件
dotnet tool install -g dotnet-trace
#安装stack 获取堆栈信息
dotnet tool install -g dotnet-stack
打印安装好的dotnet 诊断工具
结论
没有讲如何使用这些工具,是因为我本身还不怎么会用.不管怎么样,这些工具能让我们更快的解决问题.本身EventPipe组件也是一直开发的状态.
EventPipe一直处于快速的迭代改进中