Liczniki zdarzeń
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 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. |
Dodatkowe zasoby
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla