Teljesítményszámlálók (dotnet-counters) vizsgálata
Ez a cikk a ✔️ dotnet-counters
3.0.47001-es és újabb verziókra vonatkozik.
A számlálók a .NET 5 vagy újabb rendszert futtató alkalmazásokból olvashatók.
Telepítés
Kétféleképpen tölthető le és telepíthető dotnet-counters
:
dotnet globális eszköz:
A NuGet-csomag legújabb kiadási verziójának
dotnet-counters
telepítéséhez használja a dotnet eszköz telepítési parancsát:dotnet tool install --global dotnet-counters
Közvetlen letöltés:
Töltse le a platformnak megfelelő végrehajtható eszközt:
OS Platform Windows x86 x64 | Arm-x64 | | Linux x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Feljegyzés
dotnet-counters
X86-alkalmazásokhoz az eszköz megfelelő x86-os verziójára van szükség.
Szinopszis
dotnet-counters [-h|--help] [--version] <command>
Leírás
dotnet-counters
a teljesítménymonitorozási eszköz az alkalmi állapotfigyeléshez és az első szintű teljesítményvizsgálathoz. Megfigyelheti az API-val vagy az EventCounter Meter API-val közzétett teljesítményszámláló-értékeket. Például gyorsan monitorozhat olyan dolgokat, mint a processzorhasználat vagy a .NET Core-alkalmazásba kidobott kivételek száma, így ellenőrizheti, hogy van-e valami gyanús, mielőtt komolyabb teljesítményvizsgálatba PerfView
dotnet-trace
kezdenének.
Beállítások
--version
Megjeleníti a dotnet-counters segédprogram verzióját.
-h|--help
Parancssori súgót jelenít meg.
Parancsok
Parancs |
---|
dotnet-counters collect |
dotnet-counters lista |
dotnet-counters monitor |
dotnet-counters ps |
dotnet-counters collect
Rendszeres időközönként gyűjtse össze a kiválasztott számlálóértékeket, és exportálja őket egy megadott fájlformátumba utófeldolgozás céljából.
Szinopszis
dotnet-counters collect [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-port] [--refresh-interval] [--counters <COUNTERS>] [--format] [-o|--output] [-- <command>]
Beállítások
-p|--process-id <PID>
A számlálóadatok gyűjtésére vonatkozó folyamat azonosítója.
-n|--name <name>
A számlálóadatok gyűjtésére vonatkozó folyamat neve.
--diagnostic-port
A létrehozandó diagnosztikai port neve. A diagnosztikai port használatával megtudhatja, hogyan indíthatja el a számlálók figyelését az alkalmazás indításakor.
--refresh-interval <SECONDS>
A megjelenített számlálók frissítése közötti késleltetési másodpercek száma
--counters <COUNTERS>
Számlálók vesszővel tagolt listája. A számlálók megadhatók
provider_name[:counter_name]
. Ha aprovider_name
számlálók megfelelő listája nélkül használja, akkor a szolgáltató összes számlálója megjelenik. A szolgáltató- és számlálónevek felderítéséhez használja a dotnet-counters lista parancsot. Az EventCountersprovider_name
esetében az EventSource és a mérőszámokprovider_name
neve a mérő neve.--format <csv|json>
Az exportálandó formátum. Jelenleg elérhető: csv, json.
-o|--output <output>
A kimeneti fájl neve.
-- <command>
A gyűjteménykonfigurációs paraméterek után a felhasználó hozzáfűzhet
--
egy parancsot egy .NET-alkalmazás elindításához.dotnet-counters
elindít egy folyamatot a megadott paranccsal, és összegyűjti a kért metrikákat. Ez gyakran hasznos az alkalmazás indítási útvonalához tartozó metrikák gyűjtéséhez, és a fő belépési pont előtt vagy röviddel korábban előforduló problémák diagnosztizálására vagy figyelésére használható.Feljegyzés
Ezzel a beállítással figyeli az első .NET-folyamatot, amely visszakomlik az eszközhöz, ami azt jelenti, hogy ha a parancs több .NET-alkalmazást indít el, az csak az első alkalmazást fogja összegyűjteni. Ezért javasoljuk, hogy használja ezt a lehetőséget önálló alkalmazásokban, vagy használja a
dotnet exec <app.dll>
lehetőséget.Feljegyzés
A dotnet-counterkon keresztül végrehajtható .NET indítása átirányítja a bemenetét/kimenetét, és nem fogja tudni kezelni a stdin/stdout értékét. Ha a CTRL+C vagy a SIGTERM billentyűkombinációval lép ki az eszközből, az biztonságosan befejezi az eszközt és a gyermekfolyamatot is. Ha a gyermekfolyamat az eszköz előtt kilép, az eszköz is kilép. Ha stdin/stdout parancsot kell használnia, használhatja a
--diagnostic-port
lehetőséget. További információt a diagnosztikai port használata című témakörben talál.
Feljegyzés
Linux és macOS rendszeren ez a parancs elvárja a célalkalmazást, és dotnet-counters
ugyanazt TMPDIR
a környezeti változót használja. Ellenkező esetben a parancs időtúllépést fog végrehajtani.
Feljegyzés
A metrikák gyűjtéséhez dotnet-counters
a célfolyamatot futtató felhasználóval azonos felhasználóként vagy gyökérként kell futtatni. Ellenkező esetben az eszköz nem fog kapcsolatot létesíteni a célfolyamattal.
Példák
Gyűjtse össze az összes számlálót 3 másodperces frissítési időközzel, és hozzon létre egy csv-t kimenetként:
> dotnet-counters collect --process-id 1902 --refresh-interval 3 --format csv --counters is unspecified. Monitoring System.Runtime counters by default. Starting a counter session. Press Q to quit.
Kezdjen
dotnet mvc.dll
gyermekfolyamatként, és kezdje el összegyűjteni a futtatókörnyezet számlálóit és ASP.NET Core Hosting-számlálókat az indításból, és mentse JSON-kimenetként:> dotnet-counters collect --format json --counters System.Runtime,Microsoft.AspNetCore.Hosting -- dotnet mvc.dll Starting a counter session. Press Q to quit. File saved to counter.json
dotnet-counters lista
A számlálónevek és leírások listáját jeleníti meg szolgáltató szerint csoportosítva.
Szinopszis
dotnet-counters list [-h|--help]
Példa
> dotnet-counters list
Showing well-known counters only. Specific processes may support additional counters.
System.Runtime
cpu-usage Amount of time the process has utilized the CPU (ms)
working-set Amount of working set used by the process (MB)
gc-heap-size Total heap size reported by the GC (MB)
gen-0-gc-count Number of Gen 0 GCs per interval
gen-1-gc-count Number of Gen 1 GCs per interval
gen-2-gc-count Number of Gen 2 GCs per interval
time-in-gc % time in GC since the last GC
gen-0-size Gen 0 Heap Size
gen-1-size Gen 1 Heap Size
gen-2-size Gen 2 Heap Size
loh-size LOH Heap Size
alloc-rate Allocation Rate
assembly-count Number of Assemblies Loaded
exception-count Number of Exceptions per interval
threadpool-thread-count Number of ThreadPool Threads
monitor-lock-contention-count Monitor Lock Contention Count
threadpool-queue-length ThreadPool Work Items Queue Length
threadpool-completed-items-count ThreadPool Completed Work Items Count
active-timer-count Active Timers Count
Microsoft.AspNetCore.Hosting
requests-per-second Request rate
total-requests Total number of requests
current-requests Current number of requests
failed-requests Failed number of requests
Feljegyzés
A Microsoft.AspNetCore.Hosting
számlálók akkor jelennek meg, ha vannak olyan folyamatok, amelyek támogatják ezeket a számlálókat, például ha egy ASP.NET Core-alkalmazás fut a gazdagépen.
dotnet-counters monitor
A kijelölt számlálók rendszeres frissítési értékeit jeleníti meg.
Szinopszis
dotnet-counters monitor [-h|--help] [-p|--process-id] [-n|--name] [--diagnostic-port] [--refresh-interval] [--counters] [-- <command>]
Beállítások
-p|--process-id <PID>
A monitorozni kívánt folyamat azonosítója.
-n|--name <name>
A monitorozni kívánt folyamat neve.
--diagnostic-port
A létrehozandó diagnosztikai port neve. A diagnosztikai port használatával megtudhatja, hogyan indíthatja el a számlálók figyelését az alkalmazás indításakor.
--refresh-interval <SECONDS>
A megjelenített számlálók frissítése közötti késleltetési másodpercek száma
--counters <COUNTERS>
Számlálók vesszővel tagolt listája. A számlálók megadhatók
provider_name[:counter_name]
. Ha aprovider_name
számlálók megfelelő listája nélkül használja, akkor a szolgáltató összes számlálója megjelenik. A szolgáltató- és számlálónevek felderítéséhez használja a dotnet-counters lista parancsot. Az EventCountersprovider_name
esetében az EventSource és a mérőszámokprovider_name
neve a mérő neve.
-- <command>
A gyűjteménykonfigurációs paraméterek után a felhasználó hozzáfűzhet --
egy parancsot egy .NET-alkalmazás elindításához. dotnet-counters
elindít egy folyamatot a megadott paranccsal, és figyeli a kért metrikákat. Ez gyakran hasznos az alkalmazás indítási útvonalához tartozó metrikák gyűjtéséhez, és a fő belépési pont előtt vagy röviddel korábban előforduló problémák diagnosztizálására vagy figyelésére használható.
Feljegyzés
Ezzel a beállítással figyeli az első .NET-folyamatot, amely visszakomlik az eszközhöz, ami azt jelenti, hogy ha a parancs több .NET-alkalmazást indít el, az csak az első alkalmazást fogja összegyűjteni. Ezért javasoljuk, hogy használja ezt a lehetőséget önálló alkalmazásokban, vagy használja a dotnet exec <app.dll>
lehetőséget.
Feljegyzés
A dotnet-counterkon keresztül végrehajtható .NET indítása átirányítja a bemenetét/kimenetét, és nem fogja tudni kezelni a stdin/stdout értékét. Ha a CTRL+C vagy a SIGTERM billentyűkombinációval lép ki az eszközből, az biztonságosan befejezi az eszközt és a gyermekfolyamatot is. Ha a gyermekfolyamat az eszköz előtt kilép, az eszköz is kilép. Ha stdin/stdout parancsot kell használnia, használhatja a --diagnostic-port
lehetőséget. További információt a diagnosztikai port használata című témakörben talál.
Feljegyzés
Linux és macOS rendszeren ez a parancs elvárja a célalkalmazást, és dotnet-counters
ugyanazt TMPDIR
a környezeti változót használja.
Feljegyzés
A metrikák figyeléséhez dotnet-counters
a célfolyamatot futtató felhasználóval azonos felhasználóként vagy gyökérként kell futtatni.
Feljegyzés
Ha a következőhöz hasonló hibaüzenet jelenik meg: [ERROR] System.ComponentModel.Win32Exception (299): A 32 bit processes cannot access modules of a 64 bit process.
olyan hibát próbál használni dotnet-counters
, amely nem egyezik a célfolyamat biteltségével. Győződjön meg arról, hogy letölti az eszköz megfelelő bitképességét a telepítési hivatkozásba.
Példák
Az összes számláló
System.Runtime
figyelése 3 másodperces frissítési időközzel:> dotnet-counters monitor --process-id 1902 --refresh-interval 3 --counters System.Runtime Press p to pause, r to resume, q to quit. Status: Running [System.Runtime] % Time in GC since last GC (%) 0 Allocation Rate (B / 1 sec) 5,376 CPU Usage (%) 0 Exception Count (Count / 1 sec) 0 GC Fragmentation (%) 48.467 GC Heap Size (MB) 0 Gen 0 GC Count (Count / 1 sec) 1 Gen 0 Size (B) 24 Gen 1 GC Count (Count / 1 sec) 1 Gen 1 Size (B) 24 Gen 2 GC Count (Count / 1 sec) 1 Gen 2 Size (B) 272,000 IL Bytes Jitted (B) 19,449 LOH Size (B) 19,640 Monitor Lock Contention Count (Count / 1 sec) 0 Number of Active Timers 0 Number of Assemblies Loaded 7 Number of Methods Jitted 166 POH (Pinned Object Heap) Size (B) 24 ThreadPool Completed Work Item Count (Count / 1 sec) 0 ThreadPool Queue Length 0 ThreadPool Thread Count 2 Working Set (MB) 19
Csak a processzorhasználat és a GC-halomméret monitorozása a következőből
System.Runtime
:> dotnet-counters monitor --process-id 1902 --counters System.Runtime[cpu-usage,gc-heap-size] Press p to pause, r to resume, q to quit. Status: Running [System.Runtime] CPU Usage (%) 24 GC Heap Size (MB) 811
A felhasználó által definiált
EventSource
értékek monitorozásaEventCounter
. További információ : Oktatóanyag: Teljesítmény mérése EventCounters használatával a .NET Core-ban.> dotnet-counters monitor --process-id 1902 --counters Samples-EventCounterDemos-Minimal Press p to pause, r to resume, q to quit. request 100
Az összes jól ismert számláló megtekintése, amely a következő helyen
dotnet-counters
érhető el:> dotnet-counters list Showing well-known counters for .NET (Core) version 3.1 only. Specific processes may support additional counters. System.Runtime cpu-usage The percent of process' CPU usage relative to all of the system CPU resources [0-100] working-set Amount of working set used by the process (MB) gc-heap-size Total heap size reported by the GC (MB) gen-0-gc-count Number of Gen 0 GCs between update intervals gen-1-gc-count Number of Gen 1 GCs between update intervals gen-2-gc-count Number of Gen 2 GCs between update intervals time-in-gc % time in GC since the last GC gen-0-size Gen 0 Heap Size gen-1-size Gen 1 Heap Size gen-2-size Gen 2 Heap Size loh-size LOH Size alloc-rate Number of bytes allocated in the managed heap between update intervals assembly-count Number of Assemblies Loaded exception-count Number of Exceptions / sec threadpool-thread-count Number of ThreadPool Threads monitor-lock-contention-count Number of times there were contention when trying to take the monitor lock between update intervals threadpool-queue-length ThreadPool Work Items Queue Length threadpool-completed-items-count ThreadPool Completed Work Items Count active-timer-count Number of timers that are currently active Microsoft.AspNetCore.Hosting requests-per-second Number of requests between update intervals total-requests Total number of requests current-requests Current number of requests failed-requests Failed number of requests
A .NET 5-alkalmazásokban
dotnet-counters
elérhető összes jól ismert számláló megtekintése:> dotnet-counters list --runtime-version 5.0 Showing well-known counters for .NET (Core) version 5.0 only. Specific processes may support additional counters. System.Runtime cpu-usage The percent of process' CPU usage relative to all of the system CPU resources [0-100] working-set Amount of working set used by the process (MB) gc-heap-size Total heap size reported by the GC (MB) gen-0-gc-count Number of Gen 0 GCs between update intervals gen-1-gc-count Number of Gen 1 GCs between update intervals gen-2-gc-count Number of Gen 2 GCs between update intervals time-in-gc % time in GC since the last GC gen-0-size Gen 0 Heap Size gen-1-size Gen 1 Heap Size gen-2-size Gen 2 Heap Size loh-size LOH Size poh-size POH (Pinned Object Heap) Size alloc-rate Number of bytes allocated in the managed heap between update intervals gc-fragmentation GC Heap Fragmentation assembly-count Number of Assemblies Loaded exception-count Number of Exceptions / sec threadpool-thread-count Number of ThreadPool Threads monitor-lock-contention-count Number of times there were contention when trying to take the monitor lock between update intervals threadpool-queue-length ThreadPool Work Items Queue Length threadpool-completed-items-count ThreadPool Completed Work Items Count active-timer-count Number of timers that are currently active il-bytes-jitted Total IL bytes jitted methods-jitted-count Number of methods jitted Microsoft.AspNetCore.Hosting requests-per-second Number of requests between update intervals total-requests Total number of requests current-requests Current number of requests failed-requests Failed number of requests Microsoft-AspNetCore-Server-Kestrel connections-per-second Number of connections between update intervals total-connections Total Connections tls-handshakes-per-second Number of TLS Handshakes made between update intervals total-tls-handshakes Total number of TLS handshakes made current-tls-handshakes Number of currently active TLS handshakes failed-tls-handshakes Total number of failed TLS handshakes current-connections Number of current connections connection-queue-length Length of Kestrel Connection Queue request-queue-length Length total HTTP request queue System.Net.Http requests-started Total Requests Started requests-started-rate Number of Requests Started between update intervals requests-aborted Total Requests Aborted requests-aborted-rate Number of Requests Aborted between update intervals current-requests Current Requests
Indítsa el
my-aspnet-server.exe
és figyelje az indításkor betöltött szerelvények #-ját:> dotnet-counters monitor --counters System.Runtime[assembly-count] -- my-aspnet-server.exe Press p to pause, r to resume, q to quit. Status: Running [System.Runtime] Number of Assemblies Loaded 24
Indítás
my-aspnet-server.exe
parancssori argumentumokkalarg1
ésarg2
annak munkakészletének és GC-halomméretének figyelése az indításkor:> dotnet-counters monitor --counters System.Runtime[working-set,gc-heap-size] -- my-aspnet-server.exe arg1 arg2
Press p to pause, r to resume, q to quit. Status: Running [System.Runtime] GC Heap Size (MB) 39 Working Set (MB) 59
dotnet-counters ps
Azokat a dotnet-folyamatokat sorolja fel, amelyeket a rendszer figyelhet dotnet-counters
.
dotnet-counters
a 6.0.320703-as és újabb verziókban is megjelennek az egyes folyamatok által elindított parancssori argumentumok, ha elérhetők.
Szinopszis
dotnet-counters ps [-h|--help]
Példa
Tegyük fel, hogy a paranccsal dotnet run --configuration Release
elindít egy hosszú ideig futó alkalmazást. Egy másik ablakban futtassa a dotnet-counters ps
parancsot. A megjelenő kimenet a következő. Ha vannak ilyenek, a parancssori argumentumok a 6.0.320703-as és újabb verzióban dotnet-counters
jelennek meg.
> dotnet-counters ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
Diagnosztikai port használata
A diagnosztikai port egy futtatókörnyezeti funkció, amellyel megkezdheti a számlálók figyelését vagy gyűjtését az alkalmazás indításakor. Ehhez dotnet-counters
használhatja dotnet-counters <collect|monitor> -- <command>
a fenti példákban leírt módon, vagy használhatja a --diagnostic-port
lehetőséget.
Az dotnet-counters <collect|monitor> -- <command>
alkalmazás gyermekfolyamatként való elindítása a legegyszerűbb módja annak, hogy a rendszerindítástól kezdve gyorsan monitorozza azt.
Ha azonban pontosabban szeretné szabályozni a figyelt alkalmazás élettartamát (például csak az első 10 percig monitorozza az alkalmazást, és folytatja a végrehajtást), vagy ha a parancssori felület használatával kell kommunikálnia az alkalmazással, a beállítással --diagnostic-port
szabályozhatja a figyelt célalkalmazást és dotnet-counters
a .
Az alábbi paranccsal a dotnet-counters létrehoz egy diagnosztikai szoftvercsatornát, amely elnevezett
myport.sock
, és várja meg a kapcsolatot.dotnet-counters collect --diagnostic-port myport.sock
Hozam:
Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sock
Egy külön konzolon indítsa el a célalkalmazást a kimeneti értékre
dotnet-counters
beállított környezeti változóvalDOTNET_DiagnosticPorts
.export DOTNET_DiagnosticPorts=/home/user/myport.sock ./my-dotnet-app arg1 arg2
Ennek ezután engedélyeznie
dotnet-counters
kell a számlálók gyűjtését a következőnmy-dotnet-app
:Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=myport.sock Starting a counter session. Press Q to quit.
Fontos
Az alkalmazás
dotnet run
indítása problémás lehet, mert a dotnet parancssori felület számos olyan gyermekfolyamatot hozhat létre, amelyek nem az Ön alkalmazásai, és amelyekhezdotnet-counters
az alkalmazás előtt csatlakozhatnak, így az alkalmazást futásidőben fel kell függeszteni. Javasoljuk, hogy közvetlenül használja az alkalmazás önálló verzióját, vagy indítsadotnet exec
el az alkalmazást.