Sdílet prostřednictvím


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

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:

  1. Otevřete Správce úloh systému Windows tak, že kliknete pravým tlačítkem na hlavní panel a vyberete "Správce úloh".
  2. Ujistěte se, že je v dolní části okna vybraná možnost Další podrobnosti.
  3. Na kartě Procesy klikněte pravým tlačítkem na sloupec a ujistěte se, že je povolený sloupec PID.
  4. 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().Idto 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ě.

Další materiály