Aracılığıyla paylaş


EF Core'daki ölçümler

Entity Framework Core (EF Core), sürekli sayısal ölçümleri kullanıma sunar ve bu da programınızın durumunun iyi bir göstergesi olabilir. Bu ölçümler aşağıdaki amaçlar için kullanılabilir:

  • Uygulama çalışırken genel veritabanı yükünü gerçek zamanlı olarak izleme
  • Performansın düşmesine neden olabilecek sorunlu kodlama uygulamalarını kullanıma sunma
  • Anormal program davranışını izleme ve yalıtma

Ölçümler

EF Core, standart System.Diagnostics.Metrics API aracılığıyla ölçümleri raporlar. Microsoft.EntityFrameworkCore ölçümün adıdır. Ölçümlerle ilgili .NET belgelerinin okunmasını öneririz.

Not

Bu özellik EF Core 9.0'da kullanıma sunulmuştur (önizlemede). EF Core'un eski sürümleri için aşağıdaki olay sayaçlarına bakın.

Ölçümler ve anlamları

Metrik: microsoft.entityframeworkcore.active_dbcontexts

Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
microsoft.entityframeworkcore.active_dbcontexts ObservableUpDownCounter {dbcontext} Şu anda etkin DbContext olan örneklerin sayısı.

Şu şekilde kullanılabilir: Entity Framework Core 9.0.

Metrik: microsoft.entityframeworkcore.queries

Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
microsoft.entityframeworkcore.queries ObservableCounter {query} Yürütülen sorguların birikmeli sayısı.

Şu şekilde kullanılabilir: Entity Framework Core 9.0.

Metrik: microsoft.entityframeworkcore.savechanges

Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
microsoft.entityframeworkcore.savechanges ObservableCounter {savechanges} Kaydedilen değişikliklerin birikmeli sayısı.

Şu şekilde kullanılabilir: Entity Framework Core 9.0.

Metrik: microsoft.entityframeworkcore.compiled_query_cache_hit_rate

Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
microsoft.entityframeworkcore.compiled_query_cache_hit_rate ObservableGauge % Derlenen sorgu önbelleği için isabet oranı - son gözlemden bu yana.

Şu şekilde kullanılabilir: Entity Framework Core 9.0.

Metrik: microsoft.entityframeworkcore.execution_strategy_operation_failures

Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
microsoft.entityframeworkcore.execution_strategy_operation_failures ObservableCounter {failure} tarafından yürütülen başarısız işlemin birikmeli IExecutionStrategysayısı.

Şu şekilde kullanılabilir: Entity Framework Core 9.0.

Metrik: microsoft.entityframeworkcore.optimistic_concurrency_failures

Veri Akışı Adı İzleme Türü Birim (UCUM) Açıklama
microsoft.entityframeworkcore.optimistic_concurrency_failures ObservableCounter {failure} İyimser eşzamanlılık hatalarının birikmeli sayısı.

Şu şekilde kullanılabilir: Entity Framework Core 9.0.

Olay Sayaçları (eski)

EF Core, standart .NET olay sayaçları özelliği aracılığıyla ölçümleri raporlar; Sayaçların nasıl çalıştığına hızlı bir genel bakış için bu blog gönderisini okumanızı öneririz.

dotnet-counters kullanarak işleme ekleme

Dotnet-counters aracı, çalışan bir işleme eklemek ve EF Core olay sayaçlarını düzenli olarak raporlamak için kullanılabilir; bu sayaçların kullanılabilir olması için programda özel bir işlem yapılması gerekmez.

İlk olarak, aracını yükleyin dotnet-counters : dotnet tool install --global dotnet-counters.

Ardından, EF Core uygulamanızı çalıştıran .NET işleminin işlem kimliğini (PID) bulun:

  1. Görev çubuğuna sağ tıklayıp "Görev Yöneticisi" seçeneğini belirleyerek Windows Görev Yöneticisi'ni açın.
  2. Pencerenin en altında "Diğer ayrıntılar" seçeneğinin belirlendiğinden emin olun.
  3. İşlemler sekmesinde bir sütuna sağ tıklayın ve PID sütununun etkinleştirildiğinden emin olun.
  4. İşlem listesinde uygulamanızı bulun ve PID sütunundan işlem kimliğini alın.

.NET uygulamanızın içinde işlem kimliği olarak Process.GetCurrentProcess().Idkullanılabilir; bu, başlangıçta PID'yi yazdırmak için yararlı olabilir.

Son olarak, aşağıdaki gibi başlatın dotnet-counters :

dotnet counters monitor Microsoft.EntityFrameworkCore -p <PID>

dotnet-counters artık çalışan işleminize eklenir ve sürekli sayaç verilerini raporlamaya başlar:

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

Sayaçlar ve anlamları

Sayaç adı Açıklama
Etkin DbContexts
(active-db-contexts)
Şu anda uygulamanızda bulunan etkin, dağıtılmamış DbContext örneklerinin sayısı. Bu sayı sürekli artarsa, DbContext örnekleri düzgün şekilde atılmadığından bir sızıntı olabilir. Bağlam havuzu etkinleştirilmişse, bu numaranın şu anda kullanımda olmayan havuza alınmış DbContext örneklerini içerdiğini unutmayın.
Yürütme Stratejisi İşlem Hataları
(total-execution-strategy-operation-failures ve execution-strategy-operation-failures-per-second)
Veritabanı işleminin yürütülemediği süre. Yeniden deneme yürütme stratejisi etkinleştirilirse, aynı işlemde birden çok denemedeki tek tek hataların her biri buna dahildir. Bu, altyapınızla ilgili geçici sorunları algılamak için kullanılabilir.
İyimser Eşzamanlılık Hataları
(total-optimistic-concurrency-failures ve optimistic-concurrency-failures-per-second)
İyimser eşzamanlılık hatası nedeniyle başarısız olan süre sayısıdır SaveChanges , çünkü veri deposundaki veriler kodunuz yüklendikten sonra değiştirildi. Bu, atılan bir DbUpdateConcurrencyException varya karşılık gelir.
Sorgu
(total-queries ve queries-per-second)
Yürütülen sorgu sayısı.
Sorgu Önbelleği İsabet Oranı (%)
(compiled-query-cache-hit-rate)
Sorgu önbelleği isabetlerinin kaçırılma oranı. Belirli bir LINQ sorgusu EF Core tarafından ilk kez yürütülür (parametreler hariç), nispeten ağır bir işlemde derlenmelidir. Normal bir uygulamada tüm sorgular yeniden kullanılır ve sorgu önbelleği isabet oranı ilk ısınma döneminden sonra %100 kararlı olmalıdır. Bu sayı zaman içinde %100'den azsa, yinelenen derlemeler nedeniyle performansın düşmesiyle karşılaşabilirsiniz ve bu da en iyi olmayan dinamik sorgu oluşturmanın bir sonucu olabilir.
SaveChanges
(total-save-changes ve save-changes-per-second)
Çağrılma sayısı SaveChanges . SaveChanges Birden çok değişikliği tek bir toplu işte kaydettiğinize dikkat edin, bu nedenle tek bir varlık üzerinde yapılan her bir güncelleştirmeyi temsil etmemesi gerekir.

Ek kaynaklar