<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          推薦學(xué)習(xí):ASP.NET Core 全局性能診斷工具

          共 6857字,需瀏覽 14分鐘

           ·

          2021-10-30 15:38


          前言

          現(xiàn)在.NET Core 上線后,不可避免的會出現(xiàn)各種問題,如內(nèi)存泄漏、CPU占用高、接口處理耗時較長等問題。這個時候就需要快速準確的定位問題,并解決。

          這時候就可以使用.NET Core 為開發(fā)人員提供了一系列功能強大的診斷工具。

          接下來就詳細了解下:.NET Core 全局診斷工具

          • dotnet-counters
          • dotnet-dump
          • dotnet-gcdump
          • dotnet-trace
          • dotnet-symbol
          • dotnet-sos

          1、dotnet-counters

          簡介

          dotnet-counters 是一個性能監(jiān)視工具,用于初級運行狀況監(jiān)視和性能調(diào)查。它通過 EventCounter API 觀察已發(fā)布的性能計數(shù)器值。例如,可以快速監(jiān)視CUP使用情況或.NET Core 應(yīng)用程序中的異常率等指標

          安裝

          通過nuget包安裝:

          dotnet tool install --global dotnet-counters

          主要命令

          • dotnet-counters ps
          • dotnet-counters list
          • dotnet-counters collect
          • dotnet-counters monitor

          a)dotnet-counters ps:顯示可監(jiān)視的 dotnet 進程的列表


          b)dotnet-counters list命令:顯示按提供程序分組的計數(shù)器名稱和說明的列表

          包括:運行時和Web主機運行信息

          c)dotnet-counters collect 命令:定期收集所選計數(shù)器的值,并將它們導(dǎo)出為指定的文件格式

          dotnet-counters collect [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-port] [--refresh-interval] [--counters <COUNTERS>] [--format] [-o|--output] [-- <command>]

          參數(shù)說明:

          示例:收集dotnet core 服務(wù)端所有性能計數(shù)器值,間隔時間為3s

          d)dotnet-counters monitor命令:顯示所選計數(shù)器的定期刷新值

          dotnet-counters monitor [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-port] [--refresh-interval] [--counters] [-- <command>]

          示例:dotnet-counters monitor --process-id 18832 --refresh-interval 2

          2、dotnet-dump

          簡介

          通過 dotnet-dump 工具,可在不使用本機調(diào)試器的情況下收集和分析 Windows 和 Linux 核心轉(zhuǎn)儲。

          安裝

          dotnet tool install --global dotnet-dump

          命令

          • dotnet-dump collect
          • dotnet-dump analyze

          a) dotnet-dump collect:從進程生成dump

          dotnet-dump collect [-h|--help] [-p|--process-id] [-n|--name] [--type] [-o|--output] [--diag]

          參數(shù)說明:



          -h|--help顯示命令行幫助。
          -p|--process-id指定從中收集轉(zhuǎn)儲的進程的 ID 號。
          -n|--name指定從中收集轉(zhuǎn)儲的進程的名稱。
          --type <Full|Heap|Mini>指定轉(zhuǎn)儲類型,它確定從進程收集的信息的類型。有三種類型:Full - 最大的轉(zhuǎn)儲,包含所有內(nèi)存(包括模塊映像)。Heap - 大型且相對全面的轉(zhuǎn)儲,其中包含模塊列表、線程列表、所有堆棧、異常信息、句柄信息和除映射圖像以外的所有內(nèi)存。Mini - 小型轉(zhuǎn)儲,其中包含模塊列表、線程列表、異常信息和所有堆棧
          -o|--output <output_dump_path>應(yīng)在其中寫入收集的轉(zhuǎn)儲的完整路徑和文件名。如果未指定:在 Windows 上默認為 .\dump_YYYYMMDD_HHMMSS.dmp 。在 Linux 上默認為 ./core_YYYYMMDD_HHMMSS 。YYYYMMDD 為年/月/日,HHMMSS 為小時/分鐘/秒。
          --diag啟用轉(zhuǎn)儲收集診斷日志記錄。

          示例

          dotnet-dump collect -p 18832


          b)dotnet-dump analyze:啟動交互式 shell 以了解轉(zhuǎn)儲

          dotnet-dump analyze <dump_path> [-h|--help] [-c|--command]

          示例:dotnet-dump analyze dump_20210509_193133.dmp 進入dmp分析,查看堆棧和未處理異常

          Sos命令列表:

          命令函數(shù)
          soshelp顯示所有可用命令
          soshelp|help <command>執(zhí)行指定的命令。
          exit|quit退出交互模式。
          clrstack <arguments>僅提供托管代碼的堆棧跟蹤。
          clrthreads <arguments>列出正在運行的托管線程。
          dumpasync <arguments>顯示有關(guān)垃圾回收堆上異步狀態(tài)機的信息。
          dumpassembly <arguments>顯示有關(guān)指定地址處程序集的詳細信息。
          dumpclass <arguments>顯示有關(guān)指定地址處的 EEClass 結(jié)構(gòu)的信息。
          dumpdelegate <arguments>顯示有關(guān)指定地址處的委托的信息。
          dumpdomain <arguments>顯示所有 AppDomain 和指定域中的所有程序集的信息。
          dumpheap <arguments>顯示有關(guān)垃圾回收堆的信息和有關(guān)對象的收集統(tǒng)計信息。
          dumpil <arguments>顯示與托管方法關(guān)聯(lián)的 Microsoft 中間語言 (MSIL)。
          dumplog <arguments>將內(nèi)存中壓力日志的內(nèi)容寫入到指定文件。
          dumpmd <arguments>顯示有關(guān)指定地址處的 MethodDesc 結(jié)構(gòu)的信息。
          dumpmodule <arguments>顯示有關(guān)指定地址處的模塊的信息。
          dumpmt <arguments>顯示有關(guān)指定地址處的 MethodTable 的信息。
          dumpobj <arguments>顯示有關(guān)位于指定地址處的對象的信息。
          dso|dumpstackobjects <arguments>顯示在當前堆棧的邊界內(nèi)找到的所有托管對象。
          eeheap <arguments>顯示有關(guān)內(nèi)部運行時數(shù)據(jù)結(jié)構(gòu)所使用的進程內(nèi)存的信息。
          finalizequeue <arguments>顯示所有已進行終結(jié)注冊的對象。
          gcroot <arguments>顯示有關(guān)對指定地址處的對象的引用(或根)的信息。
          gcwhere <arguments>顯示傳入?yún)?shù)在 GC 堆中的位置。
          ip2md <arguments>顯示 JIT 代碼中指定地址處的 MethodDesc 結(jié)構(gòu)。
          histclear <arguments>釋放由 hist* 命令系列使用的任何資源。
          histinit <arguments>從保存在調(diào)試對象中的壓力日志初始化 SOS 結(jié)構(gòu)。
          histobj <arguments>顯示與 <arguments> 相關(guān)的垃圾回收壓力日志重定位。
          histobjfind <arguments>顯示在指定地址處引用對象的所有日志項。
          histroot <arguments>顯示與指定根的提升和重定位相關(guān)的信息。
          lm|modules顯示進程中的本機模塊。
          name2ee <arguments>顯示 <argument>MethodTableEEClass 結(jié)構(gòu)。
          pe|printexception <arguments>顯示從 Exception 類派生的 <argument> 的任何對象。
          setsymbolserver <arguments>啟用符號服務(wù)器支持
          syncblk <arguments>顯示 SyncBlock 持有者信息。
          threads|setthread <threadid>設(shè)置或顯示 SOS 命令的當前線程 ID。

          3、dotnet-gcdump

          簡介

          dotnet-gcdump 工具可用于為活動 .NET 進程收集 GC(垃圾回收器)轉(zhuǎn)儲。

          dotnet-gcdump 全局工具使用 EventPipe 收集實時 .NET 進程的 GC(垃圾回收器)轉(zhuǎn)儲。創(chuàng)建 GC 轉(zhuǎn)儲時需要在目標進程中觸發(fā) GC、開啟特殊事件并從事件流中重新生成對象根圖。此過程允許在進程運行時以最小的開銷收集 GC 轉(zhuǎn)儲。

          這些轉(zhuǎn)儲對于以下幾種情況非常有用:

          • 比較多個時間點堆上的對象數(shù)。
          • 分析對象的根(回答諸如“還有哪些引用此類型的內(nèi)容?”等問題)。
          • 收集有關(guān)堆上的對象計數(shù)的常規(guī)統(tǒng)計信息。

          安裝:

          dotnet tool install --global dotnet-gcdump

          示例:從當前正在運行的進程中收集 GC 轉(zhuǎn)儲

          dotnet-gcdump collect [-h|--help] [-p|--process-id <pid>] [-o|--output <gcdump-file-path>] [-v|--verbose] [-t|--timeout <timeout>] [-n|--name <name>]

          參數(shù)說明:

          參數(shù)說明:
          -h|--help顯示命令行幫助。
          -p|--process-id可從中收集 GC 轉(zhuǎn)儲的進程 ID。
          -o|--output應(yīng)寫入收集 GC 轉(zhuǎn)儲的路徑。默認為 .\YYYYMMDD_HHMMSS_.gcdump。
          -v|--verbose收集 GC 轉(zhuǎn)儲時輸出日志。
          -t|--timeout如果收集 GC 轉(zhuǎn)儲的時間超過了此秒數(shù),則放棄收集。默認值為 30。
          -n|--name可從中收集 GC 轉(zhuǎn)儲的進程的名稱。

          生成示例:dotnet-gcdump collect -p 18832

          查看生成文件:使用perfview查看:

          4、dotnet-trace

          簡介

          分析數(shù)據(jù)通過 .NET Core 中的 EventPipe 公開。通過 dotnet-trace 工具,可以使用來自應(yīng)用的有意思的分析數(shù)據(jù),這些數(shù)據(jù)可幫助你分析應(yīng)用運行緩慢的根本原因。

          安裝

          dotnet tool install --global dotnet-trace

          命令

          dotnet-trace [-h, --help] [--version] <command>

          常用命令

          命令說明
          dotnet-trace collect從正在運行的進程中收集診斷跟蹤,或者啟動子進程并對其進行跟蹤(僅限 .NET 5+)。若要讓工具運行子進程并自其啟動時對其進行跟蹤,請將 -- 追加到 collect 命令。
          dotnet-trace convertnettrace 跟蹤轉(zhuǎn)換為備用格式,以便用于備用跟蹤分析工具。
          dotnet-trace ps列出可從中收集跟蹤的 dotnet 進程。
          dotnet-trace list-profiles列出預(yù)生成的跟蹤配置文件,并描述每個配置文件中包含的提供程序和篩選器。

          示例

          收集進程18832診斷跟蹤:

          使用Vs打開生成的跟蹤文件如下:

          5、dotnet-symbol

          簡介

          dotnet-symbol 用于下載打開核心轉(zhuǎn)儲或小型轉(zhuǎn)儲所需的文件(符號、DAC/DBI、主機文件等)。如果需要使用符號和模塊來調(diào)試在其他計算機上捕獲的轉(zhuǎn)儲文件,請使用此工具。

          安裝

          dotnet tool install --global dotnet-symbol

          命令

          dotnet-symbol [-h|--help] [options] <FILES>

          options

          參數(shù)說明
          --microsoft-symbol-server添加“http://msdl.microsoft.com/download/symbols”符號服務(wù)器路徑(默認)。
          --server-path將符號服務(wù)器添加到服務(wù)器路徑。
          authenticated-server-path使用個人訪問令牌 (PAT) 將經(jīng)過身份驗證的符號服務(wù)器添加到服務(wù)器路徑。
          --cache-directory添加緩存目錄。
          --recurse-subdirectories處理所有子目錄中的輸入文件。
          --host-only僅下載 lldb 加載核心轉(zhuǎn)儲所需的主機程序(即 dotnet)。
          --symbols下載符號文件(.pdb、.dbg 和 .dwarf)。
          --modules下載模塊文件(.dll、.so 和 .dylib)。
          --debugging下載特殊的調(diào)試模塊(DAC、DBI 和 SOS)。
          --windows-pdbs當可移植的 PDB 也可用時,會強制下載 Windows PDB。
          -o, --output設(shè)置輸出目錄。否則,請在輸入文件旁邊寫入(默認)。
          -d, --diagnostics啟用診斷輸出。
          -h|--help顯示命令行幫助。

          6、dotnet-sos

          簡介


          dotnet-sos 在 Linux 和 macOS(如果使用的是 Windbg/cdb,則在 Windows 上)安裝 SOS調(diào)試擴展。

          安裝

          dotnet tool install --global dotnet-sos

          命令

          在本地安裝用于調(diào)試 .NET Core 進程的 SOS 擴展

          dotnet-sos install

          示例

          總結(jié)

          微軟提供了一套強大的診斷工具,熟練的使用這些工具,可以更快更有效的發(fā)現(xiàn)程序的運行問題,解決程序的性能問題。

          過程中主要使用:counters、dump、trace 工具用于分析.NET Core性能問題。

          最近又了解到微軟已對這些基礎(chǔ)工具已封裝了對應(yīng)包(Microsoft.Diagnostics.NETCore.Client),可以用來開發(fā)出自己的有界面的診斷工具。后續(xù)將了解實現(xiàn)一個。

          轉(zhuǎn)自:chaney1992

          鏈接:cnblogs.com/cwsheng/p/14748477.html

          回復(fù) 【關(guān)閉】學(xué)關(guān)
          回復(fù) 【實戰(zhàn)】獲取20套實戰(zhàn)源碼
          回復(fù) 【被刪】學(xué)
          回復(fù) 【訪客】學(xué)
          回復(fù) 【小程序】學(xué)獲取15套【入門+實戰(zhàn)+賺錢】小程序源碼
          回復(fù) 【python】學(xué)微獲取全套0基礎(chǔ)Python知識手冊
          回復(fù) 【2019】獲取2019 .NET 開發(fā)者峰會資料PPT
          回復(fù) 【加群】加入dotnet微信交流群

          強烈推薦:超全C#幫助類,提升效率就靠它


          去TM收費,我要在線 Vip 視頻解析!


          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  神马久久樱桃 | 97人妻人人揉人人躁 | 蜜臀视频一区 | 好操逼在线视频 | 小早川玲子一区二区88AV |