Megosztás a következőn keresztül:


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:

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

  • --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 a provider_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ámok provider_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-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-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.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 a provider_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ámok provider_nameneve 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-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.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 argumentumokkal arg1 és arg2 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 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> 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-countersa .

  1. 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
    
  2. 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őn my-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 amelyekhez dotnet-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ítsa dotnet exec el az alkalmazást.