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.
Entity Framework Core (EF Core) maakt doorlopende numerieke metrische gegevens beschikbaar die een goede indicatie kunnen geven van de status van uw programma. Deze metrische gegevens kunnen worden gebruikt voor de volgende doeleinden:
- Algemene databasebelasting in realtime bijhouden terwijl de toepassing wordt uitgevoerd
- Maak problematische coderingsprocedures beschikbaar die kunnen leiden tot verminderde prestaties
- Afwijkend programmagedrag opsporen en isoleren
Statistieken
EF Core rapporteert metrische gegevens via de standaard-API System.Diagnostics.Metrics .
Microsoft.EntityFrameworkCore is de naam van de meter. Het is raadzaam om .NET-documentatie te lezen over metrische gegevens.
Opmerking
Deze functie is geïntroduceerd in EF Core 9.0. Zie de gebeurtenistellers hieronder voor oudere versies van EF Core.
Metrische gegevens en hun betekenis
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
Metrische gegevens: microsoft.entityframeworkcore.active_dbcontexts
| Naam | Instrumenttype | Eenheid (UCUM) | Beschrijving |
|---|---|---|---|
microsoft.entityframeworkcore.active_dbcontexts |
ObservableUpDownCounter | {dbcontext} |
Aantal momenteel actieve DbContext exemplaren. |
Beschikbaar vanaf: Entity Framework Core 9.0.
Metrische gegevens: microsoft.entityframeworkcore.queries
| Naam | Instrumenttype | Eenheid (UCUM) | Beschrijving |
|---|---|---|---|
microsoft.entityframeworkcore.queries |
ObservableCounter | {query} |
Cumulatief aantal uitgevoerde query's. |
Beschikbaar vanaf: Entity Framework Core 9.0.
Metrische gegevens: microsoft.entityframeworkcore.savechanges
| Naam | Instrumenttype | Eenheid (UCUM) | Beschrijving |
|---|---|---|---|
microsoft.entityframeworkcore.savechanges |
ObservableCounter | {savechanges} |
Cumulatief aantal opgeslagen wijzigingen. |
Beschikbaar vanaf: Entity Framework Core 9.0.
Metrische gegevens: microsoft.entityframeworkcore.compiled_query_cache_hits
| Naam | Instrumenttype | Eenheid (UCUM) | Beschrijving |
|---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_hits |
ObservableCounter | {hits} |
Cumulatief aantal treffers voor de gegenereerde query cache. |
Beschikbaar vanaf: Entity Framework Core 9.0.
Metrische gegevens: microsoft.entityframeworkcore.compiled_query_cache_misses
| Naam | Instrumenttype | Eenheid (UCUM) | Beschrijving |
|---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_misses |
ObservableCounter | {misses} |
Cumulatief aantal misses voor de gecompileerde querycache. |
Beschikbaar vanaf: Entity Framework Core 9.0.
Metrische gegevens: microsoft.entityframeworkcore.execution_strategy_operation_failures
| Naam | Instrumenttype | Eenheid (UCUM) | Beschrijving |
|---|---|---|---|
microsoft.entityframeworkcore.execution_strategy_operation_failures |
ObservableCounter | {failure} |
Cumulatief aantal mislukte bewerkingen uitgevoerd door een IExecutionStrategy. |
Beschikbaar vanaf: Entity Framework Core 9.0.
Metrische gegevens: microsoft.entityframeworkcore.optimistic_concurrency_failures
| Naam | Instrumenttype | Eenheid (UCUM) | Beschrijving |
|---|---|---|---|
microsoft.entityframeworkcore.optimistic_concurrency_failures |
ObservableCounter | {failure} |
Cumulatief aantal optimistische gelijktijdigheidsfouten. |
Beschikbaar vanaf: Entity Framework Core 9.0.
Gebeurtenistellers (verouderd)
EF Core rapporteert metrische gegevens via de standaardfunctie voor .NET-gebeurtenistellers; Het is raadzaam om dit blogbericht te lezen voor een kort overzicht van de werking van tellers.
Koppelen aan een proces met behulp van dotnet-counters
Het hulpprogramma dotnet-counters kan worden gebruikt om verbinding te maken met een actief proces en regelmatig EF Core-gebeurtenistellers te rapporteren; er hoeft in het programma niets speciaals gedaan te worden om deze tellers beschikbaar te maken.
Installeer eerst het dotnet-counters hulpprogramma: dotnet tool install --global dotnet-counters.
Zoek vervolgens de proces-id (PID) van het .NET-proces waarop uw EF Core-toepassing wordt uitgevoerd:
- Open Windows Taakbeheer door met de rechtermuisknop op de taakbalk te klikken en Taakbeheer te selecteren.
- Zorg ervoor dat de optie Meer details onderaan het venster is geselecteerd.
- Klik op het tabblad Processen met de rechtermuisknop op een kolom en zorg ervoor dat de PID-kolom is ingeschakeld.
- Zoek uw toepassing in de lijst met processen en haal de bijbehorende proces-id op uit de kolom PID.
In uw .NET-toepassing is de proces-id beschikbaar als Process.GetCurrentProcess().Id; dit kan handig zijn voor het afdrukken van de PID bij het opstarten.
Ten slotte start u dotnet-counters als volgt:
dotnet counters monitor --counters Microsoft.EntityFrameworkCore -p <PID>
dotnet-counters wordt nu gekoppeld aan het actieve proces en begint met het rapporteren van doorlopende prestatiemeteritems:
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
Tellers en hun betekenis
| Tellernaam | Beschrijving |
|---|---|
| Actieve DbContexts ( active-db-contexts) |
Het aantal actieve, niet-afgesloten DbContext-exemplaren dat momenteel in uw toepassing aanwezig is. Als dit aantal continu groeit, hebt u mogelijk een lek omdat DbContext-exemplaren niet correct worden verwijderd. Houd er rekening mee dat als contextpooling is ingeschakeld, dit aantal pooled DbContext-exemplaren bevat die momenteel niet worden gebruikt. |
| Fouten in operatiestrategie-uitvoering ( total-execution-strategy-operation-failures en execution-strategy-operation-failures-per-second) |
Het aantal keren dat een databasebewerking niet kan worden uitgevoerd. Als een strategie voor het opnieuw proberen van de uitvoering is ingeschakeld, omvat dit elke afzonderlijke fout binnen meerdere pogingen voor dezelfde bewerking. Dit kan worden gebruikt om tijdelijke problemen met uw infrastructuur te detecteren. |
| Optimistische gelijktijdigheidsfouten ( total-optimistic-concurrency-failures en optimistic-concurrency-failures-per-second) |
Het aantal keren SaveChanges is mislukt vanwege een optimistische gelijktijdigheidsfout, omdat gegevens in het gegevensarchief zijn gewijzigd sinds uw code deze heeft geladen. Dit komt overeen met het feit dat een DbUpdateConcurrencyException wordt gegooid. |
| Vragen ( total-queries en queries-per-second) |
Het aantal uitgevoerde query's. |
| Trefferfrequentie van de cache-query (%) ( compiled-query-cache-hit-rate) |
De verhouding tussen querycachetreffers en mislukkingen. De eerste keer dat een bepaalde LINQ-query wordt uitgevoerd door EF Core (met uitzondering van parameters), moet deze worden gecompileerd in wat een relatief zwaar proces is. In een normale toepassing worden alle query's opnieuw gebruikt en moet de treffersnelheid van de querycache stabiel zijn op 100% na een initiële opwarmperiode. Als dit aantal minder dan 100% in de loop van de tijd is, kan er sprake zijn van verminderde prestaties vanwege herhaalde compilaties. Dit kan het gevolg zijn van het genereren van suboptimale dynamische query's. |
| Wijzigingen opslaan ( total-save-changes en save-changes-per-second) |
Het aantal keren SaveChanges is aangeroepen. Houd er rekening mee dat SaveChanges meerdere wijzigingen in één batch worden opgeslagen, dus dit vertegenwoordigt niet noodzakelijkerwijs elke afzonderlijke update die op één entiteit wordt uitgevoerd. |