Metryki w programie EF Core
Program Entity Framework Core (EF Core) uwidacznia ciągłe metryki liczbowe, które mogą zapewnić dobre wskazanie kondycji programu. Te metryki mogą być używane w następujących celach:
- Śledzenie ogólnego obciążenia bazy danych w czasie rzeczywistym, gdy aplikacja jest uruchomiona
- Uwidacznij problematyczne praktyki kodowania, które mogą prowadzić do obniżenia wydajności
- Śledzenie i izolowanie nietypowego zachowania programu
Metryki
Metryki raportów platformy EF Core za pośrednictwem standardowego System.Diagnostics.Metrics interfejsu API. Microsoft.EntityFrameworkCore
to nazwa miernika. Zaleca się przeczytanie dokumentacji platformy .NET dotyczącej metryk.
Uwaga
Ta funkcja jest wprowadzana w programie EF Core 9.0 (w wersji zapoznawczej). Zobacz liczniki zdarzeń poniżej , aby zapoznać się ze starszymi wersjami programu EF Core.
Metryki i ich znaczenie
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
Metryka: microsoft.entityframeworkcore.active_dbcontexts
Nazwisko | Typ instrumentu | Jednostka (UCUM) | opis |
---|---|---|---|
microsoft.entityframeworkcore.active_dbcontexts |
ObservableUpDownCounter | {dbcontext} |
Liczba aktualnie aktywnych DbContext wystąpień. |
Dostępne począwszy od: Entity Framework Core 9.0.
Metryka: microsoft.entityframeworkcore.queries
Nazwisko | Typ instrumentu | Jednostka (UCUM) | opis |
---|---|---|---|
microsoft.entityframeworkcore.queries |
ObservableCounter | {query} |
Skumulowana liczba wykonanych zapytań. |
Dostępne począwszy od: Entity Framework Core 9.0.
Metryka: microsoft.entityframeworkcore.savechanges
Nazwisko | Typ instrumentu | Jednostka (UCUM) | opis |
---|---|---|---|
microsoft.entityframeworkcore.savechanges |
ObservableCounter | {savechanges} |
Skumulowana liczba zapisanych zmian. |
Dostępne począwszy od: Entity Framework Core 9.0.
Metryka: microsoft.entityframeworkcore.compiled_query_cache_hits
Nazwisko | Typ instrumentu | Jednostka (UCUM) | opis |
---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_hits |
ObservableCounter | {hits} |
Skumulowana liczba trafień dla skompilowanej pamięci podręcznej zapytań. |
Dostępne począwszy od: Entity Framework Core 9.0.
Metryka: microsoft.entityframeworkcore.compiled_query_cache_misses
Nazwisko | Typ instrumentu | Jednostka (UCUM) | opis |
---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_misses |
ObservableCounter | {misses} |
Skumulowana liczba błędów dla skompilowanej pamięci podręcznej zapytań. |
Dostępne począwszy od: Entity Framework Core 9.0.
Metryka: microsoft.entityframeworkcore.execution_strategy_operation_failures
Nazwisko | Typ instrumentu | Jednostka (UCUM) | opis |
---|---|---|---|
microsoft.entityframeworkcore.execution_strategy_operation_failures |
ObservableCounter | {failure} |
Skumulowana liczba operacji zakończonych niepowodzeniem wykonywana przez element IExecutionStrategy . |
Dostępne począwszy od: Entity Framework Core 9.0.
Metryka: microsoft.entityframeworkcore.optimistic_concurrency_failures
Nazwisko | Typ instrumentu | Jednostka (UCUM) | opis |
---|---|---|---|
microsoft.entityframeworkcore.optimistic_concurrency_failures |
ObservableCounter | {failure} |
Skumulowana liczba optymistycznych niepowodzeń współbieżności. |
Dostępne począwszy od: Entity Framework Core 9.0.
Liczniki zdarzeń (starsza wersja)
Metryki raportów platformy EF Core za pośrednictwem standardowej funkcji liczników zdarzeń platformy .NET; Zaleca się przeczytanie tego wpisu w blogu w celu szybkiego omówienia sposobu działania liczników.
Dołączanie do procesu przy użyciu liczników dotnet-counter
Narzędzie dotnet-counters może służyć do dołączania do uruchomionego procesu i regularnie raportować liczniki zdarzeń platformy EF Core. Nic specjalnego nie należy wykonywać w programie, aby te liczniki były dostępne.
Najpierw zainstaluj dotnet-counters
narzędzie: dotnet tool install --global dotnet-counters
.
Następnie znajdź identyfikator procesu (PID) procesu platformy .NET z uruchomioną aplikacją EF Core:
- Otwórz Menedżera zadań systemu Windows, klikając prawym przyciskiem myszy pasek zadań i wybierając pozycję "Menedżer zadań".
- Upewnij się, że opcja "Więcej szczegółów" jest zaznaczona w dolnej części okna.
- Na karcie Procesy kliknij prawym przyciskiem myszy kolumnę i upewnij się, że kolumna PID jest włączona.
- Znajdź aplikację na liście procesów i pobierz jej identyfikator procesu z kolumny PID.
W aplikacji .NET identyfikator procesu jest dostępny jako Process.GetCurrentProcess().Id
. Może to być przydatne do drukowania identyfikatora PID podczas uruchamiania.
Na koniec uruchom polecenie dotnet-counters
w następujący sposób:
dotnet counters monitor Microsoft.EntityFrameworkCore -p <PID>
dotnet-counters
Zostanie teraz dołączony do uruchomionego procesu i rozpocznie raportowanie danych licznika ciągłego:
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
Liczniki i ich znaczenie
Nazwa licznika | opis |
---|---|
Active DbContexts ( active-db-contexts ) |
Liczba aktywnych, niedysponowanych wystąpień DbContext obecnie w aplikacji. Jeśli ta liczba stale rośnie, może wystąpić wyciek, ponieważ wystąpienia dbContext nie są prawidłowo usuwane. Należy pamiętać, że jeśli włączono buforowanie kontekstów, ta liczba obejmuje wystąpienia DbContext w puli, które nie są obecnie używane. |
Błędy operacji strategii wykonywania ( total-execution-strategy-operation-failures i execution-strategy-operation-failures-per-second ) |
Liczba nieudanych operacji bazy danych. Jeśli włączono strategię ponawiania próby wykonania, obejmuje to poszczególne niepowodzenia w ramach wielu prób w ramach tej samej operacji. Może to służyć do wykrywania przejściowych problemów z infrastrukturą. |
Optymistyczne błędy współbieżności ( total-optimistic-concurrency-failures i optimistic-concurrency-failures-per-second ) |
Liczba niepomyślnych SaveChanges awarii z powodu optymistycznego błędu współbieżności, ponieważ dane w magazynie danych zostały zmienione od załadowania kodu. Odpowiada DbUpdateConcurrencyException to zgłaszaniu. |
Kwerendy ( total-queries i queries-per-second ) |
Liczba wykonanych zapytań. |
Szybkość trafień pamięci podręcznej zapytań (%) ( compiled-query-cache-hit-rate ) |
Współczynnik trafień pamięci podręcznej zapytań do chybień. Przy pierwszym wykonaniu danego zapytania LINQ przez program EF Core (z wyłączeniem parametrów), należy go skompilować w procesie stosunkowo ciężkim. W normalnej aplikacji wszystkie zapytania są ponownie używane, a szybkość trafień pamięci podręcznej zapytań powinna być stabilna na poziomie 100% po początkowym okresie rozgrzewki. Jeśli liczba ta jest mniejsza niż 100% w czasie, może wystąpić obniżona wydajność z powodu powtarzających się kompilacji, co może być wynikiem nieoptymalnego generowania zapytań dynamicznych. |
SaveChanges ( total-save-changes i save-changes-per-second ) |
Liczba wywołań SaveChanges . Należy pamiętać, że SaveChanges zapisuje wiele zmian w jednej partii, więc niekoniecznie reprezentuje to każdą pojedynczą aktualizację wykonywaną w jednej jednostce. |