Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
A letöltésnek és a használatnak dotnet-countershárom módja van:
Egylövetű végrehajtás (ajánlott):
A .NET 10.0.100-tól kezdve állandó telepítés nélkül is futtatható
dotnet-countersa következőveldnx:dnx dotnet-counters [options]Például:
dnx dotnet-counters monitor --process-id 1234Ez a módszer automatikusan letölti és futtatja a legújabb verziót a rendszer végleges módosítása nélkül.
dotnet globális eszköz:
A
dotnet-counterslegújabb kiadási verziójának gyakori használatra való telepítéséhez használja a dotnet eszköz telepítési parancsát:dotnet tool install --global dotnet-countersEz a parancs egy
dotnet-countersbináris fájlt telepít a .NET SDK Tools elérési útjára, amelyet hozzáadhat a PATH-hoz a globálisan telepített eszközök egyszerű meghívásához.Közvetlen letöltés:
Töltse le a platformnak megfelelő végrehajtható eszközt:
OS Platform Windows 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 EventCounterMeter 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 PerfViewdotnet-tracekezdenének.
Beállítások
--versionMegjeleníti a segédprogram verzióját
dotnet-counters.-h|--helpParancssori súgót jelenít meg.
Parancsok
| Parancs |
|---|
| dotnet-counters collect |
| 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.
Feljegyzés
Linuxon és macOS rendszeren a beállítás használatához a célalkalmazásra van szükség, és
dotnet-countersugyanaztTMPDIRa környezeti változót kell használnia. Ellenkező esetben a parancs időtúllépést fog végrehajtani.-n|--name <name>A számlálóadatok gyűjtésére vonatkozó folyamat neve.
Feljegyzés
Linuxon és macOS rendszeren a beállítás használatához a célalkalmazásra van szükség, és
dotnet-countersugyanaztTMPDIRa környezeti változót kell használnia. Ellenkező esetben a parancs időtúllépést fog végrehajtani.--diagnostic-port <port-address[,(listen|connect)]>Beállítja a figyelendő folyamattal való kommunikációhoz használt diagnosztikai portot .
dotnet-countersés a célfolyamaton belüli .NET-futtatókörnyezetnek meg kell egyeznie a portcímmel, az egyik figyeléssel, a másik pedig a csatlakozással.dotnet-countersautomatikusan meghatározza a megfelelő portot a csatoláskor vagy--process-ida--namebeállítások használatakor, vagy amikor elindít egy folyamatot a-- <command>beállítás használatával. Általában csak akkor szükséges explicit módon megadni a portot, ha a jövőben elinduló folyamatra vár, vagy egy olyan folyamat felé való kommunikációhoz, amely egy olyan tárolón belül fut, amely nem része az aktuális folyamatnévtérnek.Az
port-addressoperációs rendszer különbségei:- Linux és macOS – a Unix-tartomány szoftvercsatornáinak elérési útja, például
/foo/tool1.socket. - Windows – egy elnevezett cső elérési útja, például
\\.\pipe\my_diag_port1. - Android, iOS és tvOS – ip:port, például
127.0.0.1:9000.
Alapértelmezés szerint
dotnet-countersa megadott címen figyel. Ehelyett a cím után hozzáfűzvedotnet-counterskérheti,connecta csatlakozást. Például csatlakozik egy .NET-futtatókörnyezeti folyamathoz,--diagnostic-port /foo/tool1.socket,connectamely a Unix-tartomány szoftvercsatornáját/foo/tool1.socketfigyeli.A számlálók alkalmazásindításból való indításához használt beállítással kapcsolatos további információkért tekintse meg a diagnosztikai port használatát.
- Linux és macOS – a Unix-tartomány szoftvercsatornáinak elérési útja, például
--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_nameszá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 tekintse meg a beépített metrikákat. Az EventCountersprovider_nameesetében az EventSource és a mérőszámokprovider_nameneve 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-counterselindí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 beállítást önálló alkalmazásokban, vagy használja a
dotnet exec <app.dll>lehetőséget.Feljegyzés
Ha elindít egy .NET-végrehajtható fájlt
dotnet-counters, a rendszer átirányítja annak bemenetét/kimenetét, és nem fogja tudni kezelni az stdin/stdout értékét. Az eszközről a Ctrl+C vagy a SIGTERM billentyűkombinációval is kiléphet, így biztonságosan befejezheti 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-portlehetőséget. További információ: Diagnosztikai port használata.
Feljegyzés
A metrikák gyűjtéséhez dotnet-countersa 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.dllgyermekfolyamatké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 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-portA 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_nameszá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 tekintse meg a beépített metrikákat. Az EventCountersprovider_nameesetében az EventSource és a mérőszámokprovider_nameneve a mérő neve.-- <command>A gyűjteménykonfigurációs paraméterek után hozzáfűzhet
--egy parancsot egy .NET-alkalmazás elindításához.dotnet-counterselindí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 beállítást önálló alkalmazásokban, vagy használja a
dotnet exec <app.dll>lehetőséget.Feljegyzés
Ha elindít egy .NET-végrehajtható fájlt,
dotnet-countersátirányítja annak bemenetét/kimenetét, és nem fogja tudni kezelni az stdin/stdout értékét. Az eszközről a Ctrl+C vagy a SIGTERM billentyűkombinációval is kiléphet, így biztonságosan befejezheti 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-portlehetőséget. További információ: Diagnosztikai port használata.
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-countersa 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.olyant 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.Runtimefigyelé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 Name Current Value [System.Runtime] dotnet.assembly.count ({assembly}) 115 dotnet.gc.collections ({collection}) gc.heap.generation ------------------ gen0 5 gen1 1 gen2 1 dotnet.gc.heap.total_allocated (By) 1.6947e+08 dotnet.gc.last_collection.heap.fragmentation.size (By) gc.heap.generation ------------------ gen0 0 gen1 348,248 gen2 0 loh 32 poh 0 dotnet.gc.last_collection.heap.size (By) gc.heap.generation ------------------ gen0 0 gen1 18,010,920 gen2 5,065,600 loh 98,384 poh 3,407,048 dotnet.gc.last_collection.memory.committed_size (By) 66,842,624 dotnet.gc.pause.time (s) 0.05 dotnet.jit.compilation.time (s) 1.317 dotnet.jit.compiled_il.size (By) 574,886 dotnet.jit.compiled_methods ({method}) 6,008 dotnet.monitor.lock_contentions ({contention}) 194 dotnet.process.cpu.count ({cpu}) 16 dotnet.process.cpu.time (s) cpu.mode -------- system 4.953 user 6.266 dotnet.process.memory.working_set (By) 1.3217e+08 dotnet.thread_pool.queue.length ({work_item}) 0 dotnet.thread_pool.thread.count ({thread}) 133 dotnet.thread_pool.work_item.count ({work_item}) 71,188 dotnet.timer.count ({timer}) 124Feljegyzés
Ha az alkalmazás a .NET 8-os vagy újabb verzióját használja, a System.Runtime Meter nem létezik ezekben a verziókban, és
dotnet-countersvissza fog esni a régebbi System.Runtime EventCounters megjelenítéséhez. A felhasználói felület kissé másképp néz ki, ahogy az itt látható.[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) 19Csak a szemétgyűjtések és a szemétgyűjtési halom lefoglalásának figyelése a következőből
System.Runtime:> dotnet-counters monitor --process-id 1902 --counters System.Runtime[dotnet.gc.collections,dotnet.gc.heap.total_allocated] Press p to pause, r to resume, q to quit. Status: Running Name Current Value [System.Runtime] dotnet.gc.collections ({collection}) gc.heap.generation ------------------ gen0 0 gen1 0 gen2 0 dotnet.gc.heap.total_allocated (By) 9,943,384A felhasználó által definiált
EventCounterértékek monitorozásaEventSource. 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 100Indí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[dotnet.assembly.count] -- my-aspnet-server.exe Press p to pause, r to resume, q to quit. Status: Running Name Current Value [System.Runtime] dotnet.assembly.count ({assembly}) 11Indítás
my-aspnet-server.exeparancssori argumentumokkalarg1ésarg2annak munkakészletének és GC-halomméretének figyelése az indításkor:> dotnet-counters monitor --counters System.Runtime[dotnet.process.memory.working_set,dotnet.gc.last_collection.heap.size] -- my-aspnet-server.exe arg1 arg2Name Current Value [System.Runtime] dotnet.gc.last_collection.heap.size (By) gc.heap.generation ------------------ gen0 560 gen1 462,720 gen2 0 loh 0 poh 8,184 dotnet.process.memory.working_set (By) 48,431,104
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ó is megjeleníti azokat a parancssori argumentumokat, amelyekkel az egyes folyamatok elindultak, ha elérhetők.
Szinopszis
dotnet-counters ps [-h|--help]
Példa
Tegyük fel, hogy a paranccsal dotnet run --configuration Releaseelindí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-countershasználhatja dotnet-counters <collect|monitor> -- <command> az előző példákban leírtak szerint, 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-countersa .
Az alábbi parancs
dotnet-counterslétrehoz egy diagnosztikai szoftvercsatornát, amely elnevezettmyport.sock, és várja meg a kapcsolatot.dotnet-counters collect --diagnostic-port myport.sockHozam:
Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sockEgy külön konzolon indítsa el a célalkalmazást a kimeneti értékre
DOTNET_DiagnosticPortsbeállított környezeti változóvaldotnet-counters.export DOTNET_DiagnosticPorts=/home/user/myport.sock ./my-dotnet-app arg1 arg2Ezzel megkezdheti
dotnet-countersa számlálók gyűjtését a következő időpontbanmy-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 runindí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-countershozzájuk, így az alkalmazás futásidőben fel lesz függesztve. Javasoljuk, hogy közvetlenül használja az alkalmazás önálló verzióját, vagy indítsadotnet execel az alkalmazást.