Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
.NET Framework-toepassingen, die alleen worden uitgevoerd in Windows, kunnen Windows-prestatiemeteritems gebruiken om de status en prestaties van toepassingen te bewaken. In .NET Core en latere versies biedt het platform echter platformoverschrijdende alternatieven via de EventCounters - en System.Diagnostics.Metrics-API's .
Dit artikel bevat richtlijnen voor het migreren van Windows-prestatiemeteritems naar de nieuwere metrische systemen die beschikbaar zijn in moderne .NET-versies.
Een korte geschiedenis van metrische .NET-gegevens
.NET-toepassingen kunnen worden bewaakt met behulp van verschillende mechanismen, afhankelijk van de .NET-versie en het platform:
- .NET Framework: maakt voornamelijk gebruik van Windows-prestatiemeteritems (alleen Windows)
- .NET Core 3.0-3.1, .NET 5+: EventCounters (platformoverschrijdend) en ingebouwde runtimegegevens, netwerkmetrieken en ASP.NET metrische gegevens geïntroduceerd met behulp van deze API's
- .NET 6+: System.Diagnostics.Metrics-API toegevoegd (platformoverschrijdend, OpenTelemetry compatibel)
- .NET 8+: ingebouwde netwerkgegevens en ASP.NET metrische gegevens toegevoegd met behulp van de nieuwe System.Diagnostics.Metrics-API
- .NET 9+: ingebouwde runtimegegevens toegevoegd met behulp van de nieuwe System.Diagnostics.Metrics-API
De nieuwere systemen voor metrische gegevens bieden verschillende voordelen:
- Platformoverschrijdende bewerking: Werkt op Windows, Linux, macOS
- Containervriendelijk: Werkt in containeromgevingen
- Moderne hulpprogramma's: integreert met OpenTelemetry- en waarneembaarheidsplatforms
- Ondersteunt xcopy-installatie: er zijn geen extra installatiestappen of bevoegdheden vereist
Zie de vergelijking van de Metrics-API voor meer informatie.
Metrische gegevens verzamelen in moderne .NET-toepassingen
Als u metrische gegevens wilt verzamelen en analyseren, raadpleegt u de handleidingen System.Diagnostics.Metrics en EventCounters .
Veelvoorkomende Windows-prestatiecounters koppelen aan moderne metrische gegevens
Als het monitoringssysteem voor uw .NET Framework-toepassing gebruikmaakt van door de runtime geleverde Windows Performance Counters, moet u in plaats daarvan alternatieve EventCounters of op System.Diagnostics.Metrics gebaseerde metrische gegevens selecteren. In de volgende tabellen ziet u alternatieven voor veel algemene tellers. Niet alle .NET Framework-tellers zijn overgezet naar nieuwe alternatieven. In sommige gevallen werden onregelmatig gebruikte tellers stopgezet, en in andere gevallen hebben implementatiewijzigingen in het platform bepaalde tellers irrelevant gemaakt.
Geheugentellers
Prestatiecounter van Windows | EventCounter-equivalent | Equivalent van api voor metrische gegevens |
---|---|---|
.NET CLR Memory\# Bytes in all Heaps |
System.Runtime\GC Heap Size (gc-heap-size ) |
System.Runtime\dotnet.gc.last_collection.heap.size |
.NET CLR Memory\# Gen 0 Collections |
System.Runtime\Gen 0 GC Count (gen-0-gc-count ) |
System.Runtime\dotnet.gc.collections met kenmerk gc.heap.generation=gen0 |
.NET CLR Memory\# Gen 1 Collections |
System.Runtime\Gen 1 GC Count (gen-1-gc-count ) |
System.Runtime\dotnet.gc.collections met kenmerk gc.heap.generation=gen1 |
.NET CLR Memory\# Gen 2 Collections |
System.Runtime\Gen 2 GC Count (gen-2-gc-count ) |
System.Runtime\dotnet.gc.collections met kenmerk gc.heap.generation=gen2 |
.NET CLR Memory\% Time in GC |
System.Runtime\% Time in GC since last GC (time-in-gc ) |
System.Runtime\dotnet.gc.pause.time (berekenen als percentage van de totale tijd) |
.NET CLR Memory\# Total committed Bytes |
Geen | System.Runtime\dotnet.gc.last_collection.memory.committed_size |
.NET CLR Memory\Large Object Heap Size |
System.Runtime\LOH Size (loh-size ) |
System.Runtime\dotnet.gc.last_collection.heap.size met kenmerk gc.heap.generation=loh |
.NET CLR Memory\Allocated Bytes/sec |
System.Runtime\Allocation Rate (alloc-rate ) |
Rente berekenen op System.Runtime\dotnet.gc.heap.total_allocated |
Opmerking
dotnet.gc.pause.time
maakt een verbeterde berekening mogelijk die ongewenst gedrag in de oudere % Time in GC
metrische gegevens vermijdt.
% Time in GC
berekend 100 * pause_time_in_most_recent_GC
/ time_between_most_recent_two_GCs
. In sommige gevallen zouden twee GC's zeer dicht bij elkaar voorkomen, waardoor een hoge waarde ontstaat op basis van een klein niet-representatief gedeelte van het totale tijdsinterval.
gc.heap.pause.time
verzamelt de totale tijd die de GC tot nu toe heeft gebruikt om applicatiedraden te pauzeren, wat het mogelijk maakt om de GC-pauzetijd tijdens een gemeten tijdsinterval te berekenen. Dit is een echte meting van GC-overhead, maar de wijziging in de berekening betekent dat de metrische gegevens mogelijk niet overeenkomen, zelfs niet wanneer het onderliggende GC-gedrag ongewijzigd is.
JIT- en laadtellers
Prestatiecounter van Windows | EventCounter-equivalent | Equivalent van api voor metrische gegevens |
---|---|---|
.NET CLR Jit\# of Methods Jitted |
System.Runtime\Methods Jitted Count (methods-jitted-count ) |
System.Runtime\dotnet.jit.compiled_methods |
.NET CLR Jit\IL Bytes Jitted |
System.Runtime\IL Bytes Jitted (il-bytes-jitted ) |
System.Runtime\dotnet.jit.compiled_il.size |
.NET CLR Loading\Current Assemblies |
System.Runtime\Number of Assemblies Loaded (assembly-count ) |
System.Runtime\dotnet.assembly.count |
.NET CLR Jit\Total # of IL Bytes Jitted |
System.Runtime\IL Bytes Jitted (il-bytes-jitted ) |
System.Runtime\dotnet.jit.compiled_il.size |
Draad-tellers
Prestatiecounter van Windows | EventCounter-equivalent | Equivalent van api voor metrische gegevens |
---|---|---|
.NET CLR LocksAndThreads\Current Queue Length |
System.Runtime\ThreadPool Queue Length (threadpool-queue-length ) |
System.Runtime\dotnet.thread_pool.queue.length |
.NET CLR LocksAndThreads\Contention Rate / sec |
System.Runtime\Monitor Lock Contention Count (monitor-lock-contention-count ) |
Rente berekenen op System.Runtime\dotnet.monitor.lock_contentions |
Uitzonderingen-tellers
Prestatiecounter van Windows | EventCounter-equivalent | Equivalent van api voor metrische gegevens |
---|---|---|
.NET CLR Exceptions\# of Exceps Thrown / sec |
System.Runtime\Exception Count (exception-count ) |
Rente berekenen op System.Runtime\dotnet.exceptions |
.NET CLR Exceptions\# of Exceps Thrown |
Geen | System.Runtime\dotnet.exceptions |
Socketnetwerktellers
Prestatiecounter van Windows | EventCounter-equivalent | Equivalent van api voor metrische gegevens |
---|---|---|
.NET CLR Networking\Bytes Received |
System.Net.Sockets\Bytes Received (bytes-received ) |
Geen |
.NET CLR Networking\Bytes Sent |
System.Net.Sockets\Bytes Sent (bytes-sent ) |
Geen |
.NET CLR Networking\Connections Established |
System.Net.Sockets\Outgoing Connections Established (outgoing-connections-established ) |
Geen |
.NET CLR Networking\Datagrams Received |
System.Net.Sockets\Datagrams Received (datagrams-received ) |
Geen |
.NET CLR Networking\Datagrams Sent |
System.Net.Sockets\Datagrams Sent (datagrams-sent ) |
Geen |
DNS-netwerktellers
Prestatiecounter van Windows | EventCounter-equivalent | Equivalent van api voor metrische gegevens |
---|---|---|
.NET CLR Networking\DNS Lookups |
System.Net.NameResolution\DNS Lookups Requested (dns-lookups-requested ) |
De histogram-bakken optellen in System.Net.NameResolution\dns.lookup.duration |
.NET CLR Networking\DNS Resolution Time |
System.Net.NameResolution\Average DNS Lookup Duration (dns-lookups-duration ) |
System.Net.NameResolution\dns.lookup.duration |
HttpWebRequest-tellers
HttpWebRequest
is vervangen door HttpClient. Zie de HttpClient EventCounters en System.Diagnostics.Metrics voor meer informatie over de ingebouwde metrische gegevens.
ASP.NET tellers
ASP.NET is aanzienlijk veranderd tussen .NET Framework en .NET Core. Veel tellers zijn verouderd of worden anders gemeten dan in het verleden. Zie de ASP.NET EventCounters en System.Diagnostics.Metrics voor meer informatie over de ingebouwde metrische gegevens.
Volgende stappen
- Meer informatie over EventCounters in .NET
- De SYSTEM.Diagnostics.Metrics-API verkennen
- Meer informatie over het verzamelen van metrische gegevens
- Bekende EventCounters en ingebouwde metrieken beoordelen