Teljesítményszámlálók (dotnet-counters) vizsgálata
Ez a cikk a következő verziókra vonatkozik: ✔️ dotnet-counters
3.0.47001-es és újabb verziók
Telepítés
A letöltésnek és a telepítésnek dotnet-counters
két módja van:
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:
Operációs rendszer Platform Windows x86 | x64 | Kar | Arm-x64 Linux x64 | Kar | Arm64 | musl-x64 | musl-Arm64
Megjegyzés
dotnet-counters
Az x86-alkalmazásokhoz az eszköz megfelelő x86-os verziójára van szükség.
Áttekintés
dotnet-counters [-h|--help] [--version] <command>
Description
dotnet-counters
egy teljesítménymonitorozási eszköz az alkalmi állapotmonitorozáshoz és az első szintű teljesítményvizsgálathoz. Megfigyelheti az API-val vagy az EventCounterMeter API-val közzétett teljesítményszámláló-értékeket. Gyorsan monitorozhat például olyan dolgokat, mint a processzorhasználat vagy a .NET Core-alkalmazásban megjelenő kivételek aránya, hogy kiderüljön, van-e valami gyanús, mielőtt komolyabb teljesítményvizsgálatba kezd a vagy dotnet-trace
a használatávalPerfView
.
Beállítások
--version
Megjeleníti a dotnet-counters segédprogram verzióját.
-h|--help
A parancssori súgót jeleníti 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 a feldolgozás után.
Áttekintés
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>
Annak a folyamatnak a neve, amelyből számlálóadatokat gyűjt.
--diagnostic-port
A létrehozandó diagnosztikai port neve. A diagnosztikai port használatával megtudhatja, hogyan indíthatja el a figyelési számlálókat az alkalmazás indításával.
--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 list parancsot. Az EventCounters esetében az EventSource neve,provider_name
a Mérőkprovider_name
esetében pedig 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>
(csak .NET 5-ös vagy újabb verziót futtató célalkalmazásokhoz)A gyűjteménykonfigurációs paraméterek után a felhasználó hozzáfűzhet
--
egy parancsot, amellyel elindíthat egy .NET-alkalmazást legalább 5.0-s futtatókörnyezettel.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ára vonatkozó metrikák gyűjtéséhez, és a fő belépési pont előtt vagy röviddel később felmerülő problémák diagnosztizálására vagy monitorozására használható.Megjegyzés
Ezzel a beállítással figyeli az első .NET 5 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.Megjegyzés
A dotnet-counterson keresztül végrehajtható .NET-fájl elindításakor a bemenet/kimenet átirányításra kerül, és nem fog tudni kommunikálni az stdin/stdoutjával. Ha a CTRL+C vagy AIGTERM billentyűkombinációval kilép az eszközből, az biztonságosan lezárja az eszközt és a gyermekfolyamatot is. Ha a gyermekfolyamat az eszköz előtt kilép, az eszköz is kilép, és a nyomkövetésnek biztonságosan megtekinthetőnek kell lennie. 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.
Megjegyzé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 jelez.
Megjegyzés
A metrikák a használatával dotnet-counters
történő gyűjtéséhez ugyanazt a felhasználót kell futtatni, mint a célfolyamatot futtató felhasználót, vagy gyökérként. 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.
Kezdje el
dotnet mvc.dll
gyermekfolyamatként, és kezdje el összegyűjteni a futtatókörnyezet-számlálókat és ASP.NET Core üzemeltetési számlálókat az indításkor, é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.
Áttekintés
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
Megjegyzé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 amikor egy ASP.NET Core alkalmazás fut a gazdagépen.
dotnet-counters monitor
A kijelölt számlálók időszakosan frissülő értékeit jeleníti meg.
Áttekintés
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 figyelési számlálókat az alkalmazás indításával.
--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 list parancsot. Az EventCounters esetében az EventSource neve,provider_name
a Mérőkprovider_name
esetében pedig a Mérő neve.
-- <command>
(csak .NET 5-ös vagy újabb verziót futtató célalkalmazásokhoz)
A gyűjteménykonfigurációs paraméterek után a felhasználó hozzáfűzhet --
egy parancsot, amellyel elindíthat egy .NET-alkalmazást legalább 5.0-s futtatókörnyezettel. 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ára vonatkozó metrikák gyűjtéséhez, és a fő belépési pont előtt vagy röviddel később felmerülő problémák diagnosztizálására vagy monitorozására használható.
Megjegyzés
Ezzel a beállítással figyeli az első .NET 5 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.
Megjegyzés
A dotnet-counterson keresztül végrehajtható .NET-fájl elindításakor a bemenet/kimenet átirányításra kerül, és nem fog tudni kommunikálni az stdin/stdoutjával. Ha a CTRL+C vagy a SIGTERM billentyűkombinációval kilép az eszközből, az biztonságosan lezárja az eszközt és a gyermekfolyamatot is. Ha a gyermekfolyamat az eszköz előtt kilép, az eszköz is kilép. Ha az stdin/stdout parancsot kell használnia, használhatja a --diagnostic-port
lehetőséget. További információ: Diagnosztikai port használata .
Megjegyzé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.
Megjegyzés
Ahhoz, hogy a használatával dotnet-counters
monitorozza a metrikákat, ugyanazt a felhasználót kell futtatnia, mint a célfolyamatot futtató felhasználót, vagy gyökérként.
Megjegyzé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.
, olyant próbál használni dotnet-counters
, amelynek bitje nem egyezik a célfolyamattal. Győződjön meg arról, hogy a telepítési hivatkozásra kattintva letölti az eszköz megfelelő biterejét.
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 cpu-használat és a GC halomméretének monitorozása innen
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
Tekintse meg az összes jól ismert számlálót, 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ásból betöltött szerelvények #-ját (csak.NET 5 vagy újabb):Fontos
Ez csak a .NET 5-ös vagy újabb verziót futtató alkalmazások esetében működik.
> 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
arg1
Indítsa elmy-aspnet-server.exe
a ésarg2
a parancsot parancssori argumentumként, és figyelje a munkakészletét és a GC halomméretét az indításkor (csak.NET 5 vagy újabb verziók esetén):Fontos
Ez csak a .NET 5-ös vagy újabb verziót futtató alkalmazások esetében működik.
> 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
A által monitorozni kívánt dotnet-folyamatokat sorolja dotnet-counters
fel.
dotnet-counters
6.0.320703-as és újabb verziókban is megjelennek az egyes folyamatok által elindított parancssori argumentumok, ha elérhetők.
Áttekintés
dotnet-counters ps [-h|--help]
Példa
Tegyük fel, hogy egy hosszú ideig futó alkalmazást a paranccsal dotnet run --configuration Release
indít el. Egy másik ablakban futtassa a dotnet-counters ps
parancsot. A megjelenő kimenet a következő. A parancssori argumentumok (ha vannak ilyenek) a 6.0.320703-as és újabb verziókban 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
Fontos
Ez csak a .NET 5-ös vagy újabb verziót futtató alkalmazások esetében működik.
A diagnosztikai port a .NET 5-ben hozzáadott 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
dotnet-counters <collect|monitor> -- <command>
használhatja a fenti példákban leírtak szerint, vagy használhatja a --diagnostic-port
lehetőséget.
Az alkalmazás gyermekfolyamatként való elindításának a legegyszerűbb dotnet-counters <collect|monitor> -- <command>
módja annak, hogy a rendszerindítástól kezdve gyorsan monitorozza.
Ha azonban részletesebben szeretné szabályozni a figyelt alkalmazás élettartamát (például csak az első 10 percre szeretné figyelni az alkalmazást, és folytatni szeretné a végrehajtást), vagy ha a parancssori felülettel kell interakcióba lépnie az alkalmazással, a beállítással --diagnostic-port
szabályozhatja a figyelt célalkalmazást és dotnet-counters
a -t is.
Az alábbi paranccsal a dotnet-counters létrehoz egy nevű
myport.sock
diagnosztikai szoftvercsatornát, és megvárja a kapcsolatot.dotnet-counters collect --diagnostic-port myport.sock
Kimenet:
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ása, és az alkalmazás előtt csatlakozhatnakdotnet-counters
hozzájuk, így az alkalmazás futásidőben felfüggeszthető. Javasoljuk, hogy közvetlenül használja az alkalmazás önálló verzióját, vagy indítsadotnet exec
el az alkalmazást.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: