.NET Core CLI 的性能诊断工具介绍
前言
开发人员的.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 的性能诊断工具介绍的更多相关文章
- 使用vs自带的性能诊断工具
visual studio是个强大的集成开发环境,内置了程序性能诊断工具.下面通过两段代码进行介绍. static void Main( string[] args) { Test1(); Test2 ...
- 性能检测工具介绍-Linux系统命令行
本文介绍的关于Linux自带命令进行性能检测的介绍,详细介绍这些linux自带的工具的使用. 一.uptime uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总 ...
- .NET Core-全局性能诊断工具
前言: 现在.NET Core 上线后,不可避免的会出现各种问题,如内存泄漏.CPU占用高.接口处理耗时较长等问题.这个时候就需要快速准确的定位问题,并解决. 这时候就可以使用.NET Core 为开 ...
- Android性能分析工具介绍
1. Android系统性能调优工具介绍 http://blog.csdn.net/innost/article/details/9008691 TraceviewSystraceOprofile 2 ...
- DB2 性能分析工具介绍:Event Monitor 篇(转)
https://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1112qiaob/ 引言 DB2 提供了两个比较常用的数据库性能分 ...
- Cocos开发中性能优化工具介绍之使用Windows任务管理器
说到Windows平台,我们很快就想到了Visual Studio 2012,然而Visual Studio 2012在这方面没有很好的工具.如果我们只是想知道大体上内存.CPU等在某一事件前后变化情 ...
- Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动.启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存. ...
- TraceView性能分析工具介绍
一.TraceView简介 TraceView是AndroidSDK里面自带的工具,用于对Android的应用程序以及Framework层的代码进行性能分析. TraceView是图形化的工具,最终它 ...
- Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector
那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Leak Detector(以下简 ...
随机推荐
- 从0到70%:Chrome上位揭秘!
最近的数据显示,Chrome在2020年4月的市场份额达到了70%左右,把微软的Edge和Firefox远远甩在身后,毫无疑问,Chrome赢得了第二次游览器之战,成为新一代王者. Chrome的第一 ...
- ESP8266服务器模式 发送数据和接收数据 模板1
功能如下: 1.将客户端发来的数据转发到串口:2.串口数据转发给所有客户端3.可连接4个客户端4.可设置静态IP地址5.指示灯闪烁表示无客户端连接,灯亮代表有客户端连接 /** 功能: 1.将客户端发 ...
- UWP实现第二字幕并且跟随系统的设置
话不多说,先看一下最终效果 系统设置默认 在系统设置里面更改字幕的显示效果 需求 要求播放器可以显示第二字幕,类似旁白的文字解释.比如片中出现了一个专业术语,这个时候观众可能有些疑惑.所以需要在屏幕上 ...
- ca77a_c++__一个打开并检查文件输入的程序_流对象_操作文件
/*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14*/ /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14 */ #include < ...
- K8S-磁盘配额管理-整理
1. ephemeral-storage介绍 Kubernetes在1.8的版本中引入了一种类似于CPU,RAM的新的资源模式:ephemeral-storage属性(直译为临时存储),并且在1.1 ...
- Jmeter接口测试,往MySQL数据库写数据时,中文显示???
调Jmeter接口测试,请求字段输入中文,查看数据库插入情况, 发现数据库显示 ???
- C语言副本机制
1.除了数组外,其他都有副本机制(包括结构体数组) 2.结构体作为参数具有副本机制,结构体返回值也有副本机制 . 3.函数的参数和返回值都有他的副本机制. #include<stdio.h> ...
- 使用java类的方式配置spring 需要什么注解?
1.@Configuration 修饰类,声明当前类是一个配置类,相当于applicationContext.xml文件 2.@ComponentScan 用于指定spring在初始化容器时要扫描的包 ...
- 最新的一波Vue实战技巧,不用则已,一用惊人
在Vue中,不同的选项有不同的合并策略,比如 data,props,methods是同名属性覆盖合并,其他直接合并,而生命周期钩子函数则是将同名的函数放到一个数组中,在调用的时候依次调用 在Vue中, ...
- 分布式配置中心(Native - Config)
本章只讲 Spring Cloud 本地配置方式,可以很方便的高可用集群,且存在良好通讯,不用担心云服务器与内网之间GIT带来的不便,GIT(网上GIT教程一搜一大把了….) - 快速开始 Sprin ...