.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 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

打個廣告

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM