首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET Core CLI 的性能诊断工具介绍

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

作者头像
梁规晓
发布2020-11-05 11:19:20
9690
发布2020-11-05 11:19:20
举报
文章被收录于专栏:DotNet程序园DotNet程序园

前言

开发人员的.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 analyze dump_20200925_105413.dmp

输入 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

dotnet-trace: https://github.com/dotnet/diagnostics.git

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet程序园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 先决条件
  • dotnet-counters
    • 安装 dotnet-counters
      • 主要命令
        • dotnet-counters ps
          • dotnet-counters list
            • dotnet-counters monitor
              • dotnet-counters collect
              • dotnet-dump
                • 安装 dotnet-dump
                  • 主要命令
                    • dotnet-dump collect
                      • dotnet-dump analyze
                      • dotnet-trace
                        • 安装 dotnet-trace
                          • 主要命令
                            • dotnet-trace ps
                              • dotnet-trace collect
                              • 总结
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档