小程序有做门户网站,乔家孕事(限) 17模板网,夸克建站系统官网,郑州网站建设乛汉狮网络前言开发人员的.NET Core项目上线后#xff0c;经常会出现各种问题#xff0c;内存泄漏#xff0c;CPU 100%#xff0c;处理时间长等#xff0c; 这个时候就需要快速并准确的发现问题#xff0c;并解决问题#xff0c; 除了项目本身的日志记录外#xff0c;NET Core 为… 前言开发人员的.NET Core项目上线后经常会出现各种问题内存泄漏CPU 100%处理时间长等 这个时候就需要快速并准确的发现问题并解决问题 除了项目本身的日志记录外NET Core 为我们开发人员提供了一系列功能强大并且无侵入的诊断工具本文主要介绍的是 .NET Core dotnet 诊断全局工具先决条件支持.NET Core 3.0 SDK 及更高版本, .NET Core 命令行接口 (CLI) 工具dotnet-countersdotnet-counters 是一个性能监视工具用于临时运行状况监视和初级性能调查, 你可以通过命令查看和存储当前程序的运行时信息,它可以收集 CPU内存GC线程异常 等信息安装 dotnet-countersdotnet tool install --global dotnet-counters主要命令dotnet-counters collectdotnet-counters listdotnet-counters monitordotnet-counters psdotnet-counters ps显示可监视的 dotnet 进程的列表, 我本地显示有两个.Net Core的程序在运行前面的数字是进程IDdotnet-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-dumpdotnet-dump是性能收集和分析实用工具流程是先用 dotnet-dump collect 命令 收集当前程序的运行时信息然后通过 dotnet-dump analyze 命令启动交互式 shell命令来分析程序。安装 dotnet-dumpdotnet tool install -g dotnet-dump主要命令dotnet-dump collectdotnet-dump analyzedotnet-dump collect// 捕获并写入
dotnet-dump collect --process-id 19072
运行完成后可以在当前命令行目录中找到保存的文件复制文件名然后使用 dotnet-dump analyze 命令开始分析dotnet-dump analyze// 读取文件并启动交互式shell开始分析
dotnet-dump collect --process-id 19072
输入 help 可以查看所有的命令这里我想获取托管代码的堆栈信息输入 clrstackdotnet-tracedotnet-trace 是一个跨平台的 .NET Core 工具在不使用本机探查器的情况下启用正在运行的进程的 .NET Core 跟踪集合它是围绕 .NET Core 运行时的跨平台 EventPipe 技术而构建的在 Windows、Linux 或 macOS 上提供相同体验。安装 dotnet-tracedotnet tool install --global dotnet-trace主要命令dotnet-trace collectdotnet-trace convertdotnet-trace psdotnet-trace list-profilesdotnet-trace ps此命令列出可附加到的 dotnet 进程我们一般需要拿到进程Iddotnet-trace collectdotnet-trace collect --process-id 20196 开始实时获取信息运行后数据收集到 trace.nettrace 文件 按 键停止收集, 可以用 PerfView 打开我是直接用 VS 打开的可以看到收集到的数据还是比较全面的。总结微软提供了一套强大的诊断工具熟练的使用这些工具可以更快更有效的发现程序的运行问题解决程序的性能问题。参考文档https://docs.microsoft.com/zh-cn/dotnet/core/diagnostics/dotnet-countersdotnet-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