前言

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

打个广告

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

.NET Core CLI 的性能诊断工具介绍的更多相关文章

  1. 使用vs自带的性能诊断工具

    visual studio是个强大的集成开发环境,内置了程序性能诊断工具.下面通过两段代码进行介绍. static void Main( string[] args) { Test1(); Test2 ...

  2. 性能检测工具介绍-Linux系统命令行

    本文介绍的关于Linux自带命令进行性能检测的介绍,详细介绍这些linux自带的工具的使用. 一.uptime uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总 ...

  3. .NET Core-全局性能诊断工具

    前言: 现在.NET Core 上线后,不可避免的会出现各种问题,如内存泄漏.CPU占用高.接口处理耗时较长等问题.这个时候就需要快速准确的定位问题,并解决. 这时候就可以使用.NET Core 为开 ...

  4. Android性能分析工具介绍

    1. Android系统性能调优工具介绍 http://blog.csdn.net/innost/article/details/9008691 TraceviewSystraceOprofile 2 ...

  5. DB2 性能分析工具介绍:Event Monitor 篇(转)

    https://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1112qiaob/ 引言 DB2 提供了两个比较常用的数据库性能分 ...

  6. Cocos开发中性能优化工具介绍之使用Windows任务管理器

    说到Windows平台,我们很快就想到了Visual Studio 2012,然而Visual Studio 2012在这方面没有很好的工具.如果我们只是想知道大体上内存.CPU等在某一事件前后变化情 ...

  7. Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用

    Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动.启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存. ...

  8. TraceView性能分析工具介绍

    一.TraceView简介 TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析. TraceView是图形化的工具,最终它 ...

  9. Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector

    那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Leak Detector(以下简 ...

随机推荐

  1. 油猴脚本 之 网教通直播评论记录抓取 v2.0

    先放一个 <油猴脚本 之 网教通直播评论记录抓取>那篇文章的传送门 . 修复内容 将所有表情转为 [符号表情] 字样,而非删除: 修复被禁言用户读取异常,现在被禁言用户表示为 张三 [已禁 ...

  2. 超详细实战教程丨多场景解析如何迁移Rancher Server

    本文转自Rancher Labs 作者介绍 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有6年的云计算领域经验,经历了OpenStack到Kubernetes ...

  3. Spark GraphX企业运用

    ========== Spark GraphX 概述 ==========1.Spark GraphX是什么?  (1)Spark GraphX 是 Spark 的一个模块,主要用于进行以图为核心的计 ...

  4. fastjson对String、JSONObject、JSONArray相互转换

    String——>>>JSONArray String st = "[{name:Tim,age:25,sex:male},{name:Tom,age:28,sex:mal ...

  5. 操作-写入excel

    xlwt模块 封装 #!/usr/bin/env python # -*- coding: utf-8 -*- import xlwt import xlrd from xlutils.copy im ...

  6. [Cadence] 10个Cadence AD PADS经典案例 2-12层板设计

    [Cadence] 10个Cadence Allegro经典案例 2-12层板设计 自己保存的PCB例程资料分享 Allegro AD PADS看下面截图需要的拿去 下载链接 链接: https:// ...

  7. Eplan PLC连接点-两两相连接方法

    Eplan PLC连接点-两两相连接方法. 1.插入->符号连接->T节点(向右). 2.如图 3.如图 然后再.插入->符号连接->T节点(向左). 重复2,3.即可完成两两 ...

  8. .NETCore微服务探寻(三) - 分布式日志

    前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...

  9. 在ASP.NET 中有哪些数据验证控件(请解释ASP.NET中以什么方式进行数据验证)?

    (1)RequiredFieldValidator:检查用户是否输入: (2)CompareValidator:检查两个表单输入项的输入信息是否存在某种指定关系,比如大.等于等: (3)RangeVa ...

  10. Docker(五)Docker镜像讲解

    Docker镜像讲解 镜像概念 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件 Dock ...