Metriky v EF Core
Entity Framework Core (EF Core) zveřejňuje průběžné číselné metriky, které můžou poskytnout dobrou indikaci stavu programu. Tyto metriky je možné použít pro následující účely:
- Sledování obecného zatížení databáze v reálném čase, když je aplikace spuštěná
- Zveřejnění problematických postupů kódování, které můžou vést ke snížení výkonu
- Sledování a izolace neobvyklého chování programu
Metriky
EF Core hlásí metriky prostřednictvím standardního System.Diagnostics.Metrics rozhraní API. Microsoft.EntityFrameworkCore
je název měřiče. Doporučuje se přečíst si dokumentaci k .NET o metrikách.
Poznámka:
Tato funkce se zavádí v EF Core 9.0 (ve verzi Preview). Informace o starších verzích EF Core najdete níže v čítačích událostí.
Metriky a jejich význam
microsoft.entityframeworkcore.active_dbcontexts
microsoft.entityframeworkcore.queries
microsoft.entityframeworkcore.savechanges
microsoft.entityframeworkcore.compiled_query_cache_hits
microsoft.entityframeworkcore.compiled_query_cache_misses
microsoft.entityframeworkcore.execution_strategy_operation_failures
microsoft.entityframeworkcore.optimistic_concurrency_failures
Metrický: microsoft.entityframeworkcore.active_dbcontexts
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
microsoft.entityframeworkcore.active_dbcontexts |
ObservableUpDownCounter | {dbcontext} |
Počet aktuálně aktivních DbContext instancí |
K dispozici od: Entity Framework Core 9.0.
Metrický: microsoft.entityframeworkcore.queries
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
microsoft.entityframeworkcore.queries |
ObservableCounter | {query} |
Kumulativní počet spuštěnýchdotazůch |
K dispozici od: Entity Framework Core 9.0.
Metrický: microsoft.entityframeworkcore.savechanges
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
microsoft.entityframeworkcore.savechanges |
ObservableCounter | {savechanges} |
Kumulativní počet uložených změn |
K dispozici od: Entity Framework Core 9.0.
Metrický: microsoft.entityframeworkcore.compiled_query_cache_hits
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_hits |
ObservableCounter | {hits} |
Kumulativní počet přístupů pro zkompilovanou mezipaměť dotazů. |
K dispozici od: Entity Framework Core 9.0.
Metrický: microsoft.entityframeworkcore.compiled_query_cache_misses
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_misses |
ObservableCounter | {misses} |
Kumulativní počet neúspěšných chyb pro kompilovanou mezipaměť dotazů. |
K dispozici od: Entity Framework Core 9.0.
Metrický: microsoft.entityframeworkcore.execution_strategy_operation_failures
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
microsoft.entityframeworkcore.execution_strategy_operation_failures |
ObservableCounter | {failure} |
Kumulativní počet neúspěšných operací provedených operací IExecutionStrategy . |
K dispozici od: Entity Framework Core 9.0.
Metrický: microsoft.entityframeworkcore.optimistic_concurrency_failures
Název | Typ přístroje | Jednotka (UCUM) | Popis |
---|---|---|---|
microsoft.entityframeworkcore.optimistic_concurrency_failures |
ObservableCounter | {failure} |
Kumulativní počet optimistických selhání souběžnosti. |
K dispozici od: Entity Framework Core 9.0.
Čítače událostí (starší verze)
EF Core hlásí metriky prostřednictvím standardní funkce čítačů událostí .NET; Doporučujeme si přečíst tento blogový příspěvek , abyste získali rychlý přehled o tom, jak fungují čítače.
Připojení k procesu pomocí čítačů dotnet
Nástroj dotnet-counters lze použít k připojení ke spuštěným procesům a pravidelně hlásit čítače událostí EF Core. Aby byly tyto čítače dostupné, není potřeba v programu provádět nic zvláštního.
Nejprve nainstalujte dotnet-counters
nástroj: dotnet tool install --global dotnet-counters
.
Dále vyhledejte ID procesu (PID) procesu .NET, na kterém běží vaše aplikace EF Core:
- Otevřete Správce úloh systému Windows tak, že kliknete pravým tlačítkem na hlavní panel a vyberete "Správce úloh".
- Ujistěte se, že je v dolní části okna vybraná možnost Další podrobnosti.
- Na kartě Procesy klikněte pravým tlačítkem na sloupec a ujistěte se, že je povolený sloupec PID.
- Vyhledejte aplikaci v seznamu procesů a získejte ID procesu ze sloupce PID.
V aplikaci .NET je ID procesu k dispozici, protože Process.GetCurrentProcess().Id
to může být užitečné pro tisk PID při spuštění.
Nakonec spusťte dotnet-counters
následující:
dotnet counters monitor Microsoft.EntityFrameworkCore -p <PID>
dotnet-counters
teď se připojí ke spuštěném procesu a začne vytvářet sestavy průběžných dat čítačů:
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
Čítače a jejich význam
Název čítače | Popis |
---|---|
Active DbContexts ( active-db-contexts ) |
Počet aktivních nedispozovaných instancí DbContext, které jsou aktuálně ve vaší aplikaci. Pokud se toto číslo neustále zvětšuje, může dojít k úniku, protože instance DbContext nejsou správně uvolněny. Upozorňujeme, že pokud je povolené sdružování kontextu, zahrnuje toto číslo instance DbContext ve fondu, které se aktuálně nepoužívají. |
Selhání operací strategie spouštění ( total-execution-strategy-operation-failures a execution-strategy-operation-failures-per-second ) |
Kolikrát se nepodařilo spustit operaci databáze. Pokud je povolená strategie opakovaného spuštění, zahrnuje to každou jednotlivou chybu v rámci více pokusů o stejnou operaci. Můžete ho použít ke zjišťování přechodných problémů s vaší infrastrukturou. |
Optimistická selhání souběžnosti ( total-optimistic-concurrency-failures a optimistic-concurrency-failures-per-second ) |
Počet neúspěšných pokusů SaveChanges kvůli chybě optimistické souběžnosti, protože data v úložišti dat se od načtení kódu změnila. To odpovídá DbUpdateConcurrencyException vyvolání. |
Dotazy ( total-queries a queries-per-second ) |
Počet spuštěných dotazů. |
Rychlost dosažení mezipaměti dotazů (%) ( compiled-query-cache-hit-rate ) |
Poměr přístupů mezi mezipamětí dotazů k chybějícím datům. Při prvním spuštění dotazu LINQ ef Core (s výjimkou parametrů) se musí zkompilovat v tom, co je relativně náročný proces. V normální aplikaci se všechny dotazy opakovaně používají a rychlost dosažení mezipaměti dotazů by měla být stabilní na 100 % po počátečním období zahřátí. Pokud je toto číslo v průběhu času menší než 100 %, může dojít ke snížení výkonu z důvodu opakovaných kompilací, což může být výsledkem neoptimální dynamické generování dotazů. |
SaveChanges ( total-save-changes a save-changes-per-second ) |
Počet volaných pokusů SaveChanges . Všimněte si, že SaveChanges ukládá několik změn v jedné dávce, takže nemusí nutně představovat každou jednotlivou aktualizaci provedenou v jedné entitě. |