Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Entity Framework Core (EF Core) exponerar kontinuerliga numeriska mått som kan ge en bra indikation på programmets hälsa. Dessa mått kan användas i följande syften:
- Spåra allmän databasbelastning i realtid när programmet körs
- Exponera problematiska kodningsmetoder som kan leda till försämrade prestanda
- Spåra och isolera avvikande programbeteende
Mätvärden
EF Core rapporterar mått via standard-API System.Diagnostics.Metrics :et.
Microsoft.EntityFrameworkCore är namnet på mätaren. Vi rekommenderar att du läser .NET-dokumentation om mått.
Anmärkning
Den här funktionen introducerades i EF Core 9.0. Se händelseräknare nedan för äldre versioner av EF Core.
Mått och deras betydelse
microsoft.entityframeworkcore.active_dbcontextsmicrosoft.entityframeworkcore.queriesmicrosoft.entityframeworkcore.savechangesmicrosoft.entityframeworkcore.compiled_query_cache_hitsmicrosoft.entityframeworkcore.compiled_query_cache_missesmicrosoft.entityframeworkcore.execution_strategy_operation_failuresmicrosoft.entityframeworkcore.optimistic_concurrency_failures
Mått: microsoft.entityframeworkcore.active_dbcontexts
| Namn | Instrumenttyp | Enhet (UCUM) | Beskrivning |
|---|---|---|---|
microsoft.entityframeworkcore.active_dbcontexts |
ObservableUpDownCounter | {dbcontext} |
Antal aktiva DbContext instanser. |
Tillgänglig från och med: Entity Framework Core 9.0.
Mått: microsoft.entityframeworkcore.queries
| Namn | Instrumenttyp | Enhet (UCUM) | Beskrivning |
|---|---|---|---|
microsoft.entityframeworkcore.queries |
ObservableCounter | {query} |
Ackumulerat antal utförda frågor. |
Tillgänglig från och med: Entity Framework Core 9.0.
Mått: microsoft.entityframeworkcore.savechanges
| Namn | Instrumenttyp | Enhet (UCUM) | Beskrivning |
|---|---|---|---|
microsoft.entityframeworkcore.savechanges |
ObservableCounter | {savechanges} |
Ackumulerat antal sparade ändringar. |
Tillgänglig från och med: Entity Framework Core 9.0.
Mått: microsoft.entityframeworkcore.compiled_query_cache_hits
| Namn | Instrumenttyp | Enhet (UCUM) | Beskrivning |
|---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_hits |
ObservableCounter | {hits} |
Ackumulerat antal träffar för den kompilerade frågecachen. |
Tillgänglig från och med: Entity Framework Core 9.0.
Mått: microsoft.entityframeworkcore.compiled_query_cache_misses
| Namn | Instrumenttyp | Enhet (UCUM) | Beskrivning |
|---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_misses |
ObservableCounter (observerbar räknare) | {misses} |
Ackumulerat antal missar för den kompilerade frågecachen. |
Tillgänglig från och med: Entity Framework Core 9.0.
Mått: microsoft.entityframeworkcore.execution_strategy_operation_failures
| Namn | Instrumenttyp | Enhet (UCUM) | Beskrivning |
|---|---|---|---|
microsoft.entityframeworkcore.execution_strategy_operation_failures |
ObservableCounter | {failure} |
Kumulativt antal misslyckade operationer som utförts av en IExecutionStrategy. |
Tillgänglig från och med: Entity Framework Core 9.0.
Mått: microsoft.entityframeworkcore.optimistic_concurrency_failures
| Namn | Instrumenttyp | Enhet (UCUM) | Beskrivning |
|---|---|---|---|
microsoft.entityframeworkcore.optimistic_concurrency_failures |
ObservableCounter | {failure} |
Ackumulerat antal optimistiska samtidighetsfel. |
Tillgänglig från och med: Entity Framework Core 9.0.
Händelseräknare (äldre)
EF Core rapporterar mått via standardfunktionen för .NET-händelseräknare. Vi rekommenderar att du läser det här blogginlägget för en snabb översikt över hur räknare fungerar.
Koppla till en process med dotnet-counters
Verktyget dotnet-counters kan användas för att ansluta till en process som körs och rapportera EF Core-händelseräknare regelbundet. inget särskilt behöver göras i programmet för att dessa räknare ska vara tillgängliga.
dotnet-counters Installera först verktyget: dotnet tool install --global dotnet-counters.
Leta sedan upp process-ID :t (PID) för .NET-processen som kör EF Core-programmet:
- Öppna Aktivitetshanteraren i Windows genom att högerklicka på aktivitetsfältet och välja Aktivitetshanteraren.
- Kontrollera att alternativet "Mer information" är markerat längst ned i fönstret.
- På fliken Processer högerklickar du på en kolumn och kontrollerar att PID-kolumnen är aktiverad.
- Leta upp ditt program i processlistan och hämta dess process-ID från PID-kolumnen.
I .NET-programmet är process-ID:t tillgängligt som Process.GetCurrentProcess().Id. Det kan vara användbart för att skriva ut PID vid start.
Starta slutligen dotnet-counters på följande sätt:
dotnet counters monitor Microsoft.EntityFrameworkCore -p <PID>
dotnet-counters ansluter nu till din pågående process och börjar rapportera kontinuerliga räknardata:
Press p to pause, r to resume, q to quit.
Status: Running
[Microsoft.EntityFrameworkCore]
Active DbContexts 1
Execution Strategy Operation Failures (Count / 1 sec) 0
Execution Strategy Operation Failures (Total) 0
Optimistic Concurrency Failures (Count / 1 sec) 0
Optimistic Concurrency Failures (Total) 0
Queries (Count / 1 sec) 1
Queries (Total) 189
Query Cache Hit Rate (%) 100
SaveChanges (Count / 1 sec) 0
SaveChanges (Total) 0
Räknare och deras innebörd
| Räknarens namn | Beskrivning |
|---|---|
| Active DbContexts ( active-db-contexts) |
Antalet aktiva, oinställda DbContext-instanser som för närvarande finns i din applikation. Om det här antalet växer kontinuerligt kan du ha en läcka eftersom DbContext-instanser inte tas bort korrekt. Observera att om kontextpooler är aktiverade innehåller det här numret poolade DbContext-instanser som inte används för närvarande. |
| Fel vid utförandestrategioperationer ( total-execution-strategy-operation-failures och execution-strategy-operation-failures-per-second) |
Antalet gånger som en databasåtgärd inte kunde köras. Om en strategi för återförsökskörning är aktiverad inkluderar detta varje enskilt fel inom flera försök på samma åtgärd. Detta kan användas för att identifiera tillfälliga problem med infrastrukturen. |
| Optimistiska samtidighetsfel ( total-optimistic-concurrency-failures och optimistic-concurrency-failures-per-second) |
Antalet gånger SaveChanges som misslyckades på grund av ett optimistiskt samtidighetsfel, eftersom data i datalagret har ändrats sedan koden lästes in. Detta motsvarar att en DbUpdateConcurrencyException utlösts. |
| Frågor ( total-queries och queries-per-second) |
Antalet frågor som har körts. |
| Träfffrekvens för frågecache (%) ( compiled-query-cache-hit-rate) |
Förhållandet mellan träffar och missar i cacheminnet för frågor. Första gången en viss LINQ-fråga körs av EF Core (exklusive parametrar) måste den kompileras i en relativt tung process. I ett normalt program återanvänds alla frågor och träfffrekvensen för frågecachen bör vara stabil vid 100% efter en första uppvärmningsperiod. Om det här talet är mindre än 100% över tid kan du uppleva degraderad perf på grund av upprepade kompileringar, vilket kan vara ett resultat av suboptimal dynamisk frågegenerering. |
| SparaÄndringar ( total-save-changes och save-changes-per-second) |
Antalet gånger SaveChanges har anropats. Observera att SaveChanges sparar flera ändringar i en enda batch, så detta representerar inte nödvändigtvis varje enskild uppdatering som görs på en enda entitet. |