Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Entity Framework Core (EF Core) expõe métricas numéricas contínuas que podem fornecer uma boa indicação da integridade do seu programa. Essas métricas podem ser usadas para as seguintes finalidades:
- Acompanhe a carga geral do banco de dados em tempo real enquanto o aplicativo está sendo executado
- Expor práticas de codificação problemáticas que podem levar a um desempenho degradado
- Rastrear e isolar o comportamento anômalo do programa
Métricas
O EF Core relata métricas por meio da API padrão System.Diagnostics.Metrics .
Microsoft.EntityFrameworkCore é o nome do contador. É recomendável ler a documentação do .NET sobre métricas.
Observação
Este recurso foi introduzido no EF Core 9.0. Consulte os contadores de eventos abaixo para obter versões mais antigas do EF Core.
Métricas e seu significado
microsoft.entityframeworkcore.active_dbcontextsmicrosoft.entityframeworkcore.queriesmicrosoft.entityframeworkcore.savechangesmicrosoft.entityframeworkcore.compiled_query_cache_hitsmicrosoft.entityframeworkcore.compiled_query_cache_missesmicrosoft.entityframeworkcore.execution_strategy_operation_failuresmicrosoft.entityframeworkcore.optimistic_concurrency_failures
Métrica: microsoft.entityframeworkcore.active_dbcontexts
| Nome | Tipo de Instrumento | Unidade (UCUM) | Descrição |
|---|---|---|---|
microsoft.entityframeworkcore.active_dbcontexts |
ObservableUpDownCounter | {dbcontext} |
Número de instâncias ativas DbContext no momento. |
Disponível a partir de: Entity Framework Core 9.0.
Métrica: microsoft.entityframeworkcore.queries
| Nome | Tipo de Instrumento | Unidade (UCUM) | Descrição |
|---|---|---|---|
microsoft.entityframeworkcore.queries |
Contador observável | {query} |
Contagem cumulativa de consultas executadas. |
Disponível a partir de: Entity Framework Core 9.0.
Métrica: microsoft.entityframeworkcore.savechanges
| Nome | Tipo de Instrumento | Unidade (UCUM) | Descrição |
|---|---|---|---|
microsoft.entityframeworkcore.savechanges |
Contador observável | {savechanges} |
Contagem cumulativa de alterações salvas. |
Disponível a partir de: Entity Framework Core 9.0.
Métrica: microsoft.entityframeworkcore.compiled_query_cache_hits
| Nome | Tipo de Instrumento | Unidade (UCUM) | Descrição |
|---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_hits |
Contador observável | {hits} |
Contagem total dos acertos no cache da consulta compilada. |
Disponível a partir de: Entity Framework Core 9.0.
Métrica: microsoft.entityframeworkcore.compiled_query_cache_misses
| Nome | Tipo de Instrumento | Unidade (UCUM) | Descrição |
|---|---|---|---|
microsoft.entityframeworkcore.compiled_query_cache_misses |
Contador observável | {misses} |
Contagem cumulativa de falhas para o cache de consulta compilado. |
Disponível a partir de: Entity Framework Core 9.0.
Métrica: microsoft.entityframeworkcore.execution_strategy_operation_failures
| Nome | Tipo de Instrumento | Unidade (UCUM) | Descrição |
|---|---|---|---|
microsoft.entityframeworkcore.execution_strategy_operation_failures |
Contador observável | {failure} |
Número acumulado de operações falhadas executadas por um IExecutionStrategy. |
Disponível a partir de: Entity Framework Core 9.0.
Métrica: microsoft.entityframeworkcore.optimistic_concurrency_failures
| Nome | Tipo de Instrumento | Unidade (UCUM) | Descrição |
|---|---|---|---|
microsoft.entityframeworkcore.optimistic_concurrency_failures |
Contador observável | {failure} |
Número acumulado de falhas de concorrência otimista. |
Disponível a partir de: Entity Framework Core 9.0.
Contadores de Eventos (legado)
O EF Core relata métricas por meio do recurso de contadores de eventos .NET padrão; Recomenda-se a leitura desta postagem no blog para obter uma rápida visão geral de como os contadores funcionam.
Anexar a um processo usando dotnet-counters
A ferramenta dotnet-counters pode ser usada para conectar-se a um processo em execução e relatar contadores de eventos EF Core regularmente; nada de especial precisa ser feito no programa para que esses contadores estejam disponíveis.
Primeiro, instale a dotnet-counters ferramenta: dotnet tool install --global dotnet-counters.
Em seguida, localize a ID do processo (PID) do processo .NET que executa o aplicativo EF Core:
- Abra o Gestor de Tarefas do Windows clicando com o botão direito do rato na barra de tarefas e selecionando "Gestor de Tarefas".
- Certifique-se de que a opção "Mais detalhes" está selecionada na parte inferior da janela.
- Na guia Processos, clique com o botão direito do mouse em uma coluna e verifique se a coluna PID está ativada.
- Localize seu aplicativo na lista de processos e obtenha sua ID de processo na coluna PID.
Dentro do seu aplicativo .NET, o ID do processo está disponível como Process.GetCurrentProcess().Id; isso pode ser útil para imprimir o PID na inicialização.
Finalmente, inicie dotnet-counters da seguinte forma:
dotnet counters monitor --counters Microsoft.EntityFrameworkCore -p <PID>
dotnet-counters irá agora anexar-se ao seu processo em execução e começar a relatar dados contínuos do contador.
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
Contadores e seu significado
| Nome do contador | Descrição |
|---|---|
| DbContexts ativos ( active-db-contexts) |
O número de instâncias DbContext ativas e não eliminadas atualmente na sua aplicação. Se esse número crescer continuamente, você pode ter um vazamento porque as instâncias DbContext não estão sendo descartadas corretamente. Observe que, se o pool de contexto estiver habilitado , esse número incluirá instâncias DbContext agrupadas que não estão em uso no momento. |
Falhas na operação da estratégia de execução total-execution-strategy-operation-failures e execution-strategy-operation-failures-per-second |
O número de vezes que uma operação de banco de dados falhou ao ser executada. Se uma estratégia de execução repetitiva estiver habilitada, isso incluirá cada falha individual em várias tentativas na mesma operação. Isso pode ser usado para detetar problemas transitórios com sua infraestrutura. |
Falhas de concorrência otimista total-optimistic-concurrency-failures e optimistic-concurrency-failures-per-second |
O número de vezes que SaveChanges falhou devido a um erro de concorrência otimista, porque os dados no armazenamento foram modificados desde que o seu código os carregou. Isto corresponde a um DbUpdateConcurrencyException ser lançado. |
Consultas total-queries e queries-per-second |
O número de consultas executadas. |
| Taxa de acertos do cache de consultas (%) ( compiled-query-cache-hit-rate) |
A proporção de acertos do cache de consulta para erros. A primeira vez que uma determinada consulta LINQ é executada pelo EF Core (excluindo parâmetros), ela deve ser compilada no que é um processo relativamente pesado. Numa aplicação normal, todas as interrogações são reutilizadas e a taxa de acerto do cache de interrogações deve ser estável a 100% após um período inicial de aquecimento. Se esse número for inferior a 100% ao longo do tempo, poderá enfrentar um desempenho degradado devido a compilações repetidas, o que pode ser resultado de uma geração subótima de consultas dinâmicas. |
SalvarAlterações total-save-changes e save-changes-per-second |
O número de vezes SaveChanges foi chamado. Observe que SaveChanges salva várias alterações em um único lote, portanto, isso não representa necessariamente cada atualização individual feita em uma única entidade. |