.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
dotnet-trace: https://github.com/dotnet/diagnostics.git
打个广告
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(); ...
- hanganalyz 性能诊断工具
hanganalyze是ORACLE的一款性能诊断工具,这个款工具是从oracle 8.0.6开始可用,在oracle数据库出现严重的性能问题的时候它可以帮助你定位问题所在. 1.首先说说hangan ...
- 今晚直播丨用高效的Oracle性能诊断工具,让运维工作轻松起来!
Oracle诊断性能问题时常用脚本工具 - 4月15日20:00 "工欲善其事,必先利其器",对于 Oracle 数据库性能诊断工作同样如此:在积累了一定数据库性能诊断经验的基础上 ...
- Android Studio CPU profiler性能分析工具介绍和使用详解
Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...
- oracle 性能诊断工具,oracle性能诊断工具
oracle提供的性能诊断的工具:autotrace.sql_trace.10046事件. 简要记录一下这些工具的使用方法: autotrace用于跟踪sql的执行计划,收集统计信息. 默认此功能是关 ...
- C# 性能诊断工具 dotnet-counters 的使用
官网地址(以此为准):dotnet-counters 诊断工具 - .NET CLI | Microsoft Docs 该工具主要用于监控当前项目的总体状态计数,如系统运行时.web站点请求状况等. ...
- 【Netdata】性能监测工具介绍、安装、使用
一.工具介绍 Netdata是一款Linux系统实时性能监测工具,以web的可视化方式展示系统及应用程序的实时运行状态.前端响应快,UI很整洁,操作方面,支持图表重置,缩放.具体优点如下:界面酷炫:i ...
- 运维工作常用的性能分析工具介绍
在运维工作中常用到的性能分析工具包括:vmstat.sar.iostat.netstat.free.ps.top.mpstat以及第三方开发工具,如:dstat.collectl及淘宝的开源监控项目t ...
- gbd 分析core文件_Go 性能分析工具 pprof 入门
(给Go开发大全加星标) 来源:wudaijun https://wudaijun.com/2018/04/go-pprof/ [导读]pprof是golang用于性能分析的工具.可以生成图形和文本报 ...
最新文章
- 【Python-ML】非线性映射降维-KPCA方法-新样本映射
- MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)
- mapreduce 文件可以切分吗_MapReduce的任务流程
- Android自动化测试Uiautomator--UiSelector接口简介
- 日志模块logging用法
- IIR数字滤波器的设计及应用——MATLAB
- .net api reference中文_在macOS上使用.NET SDK编译 .NET 通用中间语言
- php嘲讽,PHP为何能够受到大家追捧,又为什么饱受嘲讽?
- CVTE 2017 秋季校招一面(C++ 后台)
- Log4Net 之走进Log4Net (四)
- php做APP接口开发,接口的安全性
- SSh三大框架工作原理介绍
- 在命令行中创建Django项目
- 【电商】电商后台设计—订单中心
- Torus:为Kubernetes量身打造的分布式存储方案
- 关于强化神兽(圣兽)DBC参数详解
- 1042 Shuffling Machine (20 point(s)) - C语言 PAT 甲级
- Linux中查看jdk版本
- JAVA- IDEA debug 常用快捷键
- 已知两点求直线一般方程、点到直线距离、点是否在线上方/下方