查看原文
其他

.NET Core CLI 的性能诊断工具介绍

DotNet 2021-09-23

(给DotNet加星标,提升.Net技能

转自:SpringLeee
cnblogs.com/myshowtime/p/13292440.html

前言


开发人员的.NET Core项目上线后,经常会出现各种问题,内存泄漏,CPU 100%,处理时间长等, 这个时候就需要快速并准确的发现问题,并解决问题, 除了项目本身的日志记录外,NET Core 为我们开发人员提供了一系列功能强大并且无侵入的诊断工具,本文主要介绍的是 .NET Core dotnet 诊断全局工具。


先决条件


支持.NET Core 3.0 SDK 及更高版本, .NET Core 命令行接口 (CLI) 工具


dotnet-counters


dotnet-counters 是一个性能监视工具,用于临时运行状况监视和初级性能调查, 你可以通过命令查看和存储,当前程序的运行时信息,它可以收集 CPU,内存,GC,线程,异常 等信息


安装 dotnet-counters


dotnet tool install --global dotnet-counters


主要命令


  • dotnet-counters collect


  • dotnet-counters list


  • dotnet-counters monitor


  • dotnet-counters ps


dotnet-counters ps


显示可监视的 dotnet 进程的列表, 我本地显示有两个.Net Core的程序在运行,前面的数字是进程ID



dotnet-counters list


这个命令我们可以看到程序的运行时信息,和Web主机运行信息


  • 运行时:CPU 内存 GC 异常 线程数 异常信息...


  • Web主机: QPS 每秒请求数量, 当前请求数量和失败请求数量



dotnet-counters monitor


这个命令可以实时监控程序的运行信息


//以 3 秒的刷新间隔监视 System.Runtime 运行时信息
dotnet-counters monitor --process-id 19072
--refresh-interval 3 System.Runtime

//以 3 秒的刷新间隔监视 Web主机 运行信息
dotnet-counters monitor --process-id 19072
--refresh-interval 3 Microsoft.AspNetCore.Hosting


dotnet-counters collect


定期收集所选计数器的值,并将它们导出为指定的文件格式以进行后续处理。


// 以 3 秒的刷新间隔时间收集所有计数器的值,并生成 json 输出文件:
dotnet-counters collect --process-id 19072
--refresh-interval 3 --format json


dotnet-dump


dotnet-dump是性能收集和分析实用工具,流程是先用 dotnet-dump collect 命令 收集当前程序的运行时信息,然后通过 dotnet-dump analyze 命令启动交互式 shell命令,来分析程序。


安装 dotnet-dump


dotnet tool install -g dotnet-dump


主要命令


  • dotnet-dump collect


  • dotnet-dump analyze


dotnet-dump collect


// 捕获并写入
dotnet-dump collect --process-id 19072


运行完成后,可以在当前命令行目录中,找到保存的文件,复制文件名,然后使用 dotnet-dump analyze 命令开始分析


dotnet-dump analyze


// 读取文件,并启动交互式shell开始分析
dotnet-dump collect --process-id 19072



输入 help 可以查看所有的命令,这里我想获取托管代码的堆栈信息,输入 clrstack



dotnet-trace


dotnet-trace 是一个跨平台的 .NET Core 工具,在不使用本机探查器的情况下启用正在运行的进程的 .NET Core 跟踪集合,它是围绕 .NET Core 运行时的跨平台 EventPipe 技术而构建的,在 Windows、Linux 或 macOS 上提供相同体验。


安装 dotnet-trace


dotnet tool install --global dotnet-trace

主要命令


  • dotnet-trace collect


  • dotnet-trace convert


  • dotnet-trace ps


  • dotnet-trace list-profiles


dotnet-trace ps


此命令,列出可附加到的 dotnet 进程,我们一般需要拿到进程Id


dotnet-trace collect


dotnet-trace collect --process-id 20196 开始实时获取信息



运行后,数据收集到 trace.nettrace 文件, 按 键停止收集, 可以用 PerfView 打开,我是直接用 VS 打开的,可以看到收集到的数据还是比较全面的。



总结


微软提供了一套强大的诊断工具,熟练的使用这些工具,可以更快更有效的发现程序的运行问题,解决程序的性能问题。


参考文档:https://docs.microsoft.com/zh-cn/dotnet/core/diagnostics/dotnet-counters


《开源APM系统HttpReports在.NET Core的应用》HttpReports 是针对.Net Core 开发的轻量级APM系统, 基于MIT开源协议,主要支持了统计,分析,告警,链路监控,请求日志等, 文档齐全,前段时间也是很荣幸的加入到了 .NET Core Community 组织,目前在准备V2.0版本的发布计划, 开源不易,还希望感兴趣的同学可以点个 Star 关注下,谢谢


  • Github地址:https://github.com/dotnetcore/HttpReports


  • 在线预览:https://moa.hengyinfs.com


  • 账号: admin 密码 123456


  • 在线文档:https://www.yuque.com/httpreports/docs


- EOF -



推荐阅读  点击标题可跳转
利用 FlubuCore 用 C# 来写 DevOps 脚本C#逻辑式编程语言极简实现:代码实现(完结)Entity Framework Core 开发实践问题及规


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

好文章,我在看❤️

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存