Monitore e analise o comportamento do tempo de execução com otimizações de código

Diagnosticar os problemas de desempenho da sua aplicação pode ser difícil, especialmente quando a sua aplicação corre num ambiente de produção na cloud dinâmica. A infraestrutura, framework ou código de aplicação que gere o pedido no pipeline pode causar respostas lentas na sua aplicação.

O Code Optimizations, um serviço baseado em IA no Aplicação Azure Insights, trabalha em conjunto com o Application Insights Profiler para .NET. Juntos, detetam problemas de desempenho no consumo de CPU e memória a nível de código. Eles dão recomendações sobre como resolver esses problemas.

Tome decisões informadas e otimize o seu código utilizando dados de desempenho em tempo real e insights recolhidos do seu ambiente de produção.

Perfilador de Otimizações de Código e Insights de Aplicações para .NET

O .NET Profiler e as Otimizações de Código trabalham em conjunto para fornecer uma abordagem holística à deteção de problemas de desempenho.

Otimizações de código

A Otimização de Código identifica, analisa e resolve os dados de perfil que o Application Insights Profiler para .NET recolhe. À medida que o .NET Profiler carrega dados para o Application Insights, o modelo de aprendizagem automática analisa alguns dados para encontrar onde pode otimizar o código da aplicação. Otimizações de código:

  • Mostra dados agregados recolhidos ao longo do tempo.
  • Conecta dados com os métodos e funções no código do aplicativo.
  • Reduz o culpado ao encontrar gargalos no código.
  • Fornece correções de desempenho em nível de código com base em insights.

Identifique gargalos no seu código

A página de visão geral consolidada de Otimizações de Código mostra todas as Otimizações de Código nas suas subscrições do Azure e recursos Application Insights no portal Azure.

Otimizações de Código reúne informações a partir dos dados que o .NET Profiler recolhe e dos instantâneos do Snapshot Debugger, se estiver ativado. Identifique gargalos no seu código e reveja recomendações ao nível do código para ambientes de desenvolvimento, teste, pré-produção e produção.

Analisar recomendações ao nível do código

Depois de o Code Optimizations recolher os dados do seu ambiente a partir dos rastreios do .NET Profiler e dos instantâneos do Snapshot Debugger, se este estiver ativado, fornece recomendações ao nível do código de hora a hora. Por padrão, a exibição de dados agregados mostra uma janela contínua de 24 horas de problemas identificados recentemente, com um histórico de 30 dias para você revisar e analisar eventos passados.

Resolver questões com recomendações

Depois de identificar e analisar Otimizações de Código, use o botão Copiar detalhes no portal do Azure para trazer manualmente o contexto do insight para a sua ferramenta favorita, como o GitHub Copilot.

Também pode criar um problema GitHub a partir da página de Otimizações de Código na Azure portal e atribuí-lo ao agente de codificação do GitHub Copilot. A partir daí, o GitHub Copilot abre um pull request e envia commits de alterações de código com base nas Otimizações de Código.

Vídeo de demonstração

Application Insights Profiler para .NET

O .NET Profiler foca-se em rastrear pedidos específicos, até ao milissegundo. Oferece uma excelente visão geral dos problemas na sua candidatura e das melhores práticas gerais para os resolver.

Com o Application Insights Profiler para .NET, pode capturar, identificar e visualizar os traços de desempenho da sua aplicação a correr no Azure, independentemente do cenário. O processo de rastreamento do .NET Profiler ocorre automaticamente, em grande escala, e não afeta negativamente os seus utilizadores. O .NET Profiler identifica:

  • Os tempos de resposta medianos, mais rápidos e mais lentos para cada pedido web que os seus clientes fizerem.
  • O hot code path é o que gasta mais tempo a processar um pedido web específico.

Ative o Profiler para .NET em todas as suas aplicações Azure para recolher dados com os seguintes gatilhos:

  • Gatilho de amostragem: Inicia o Profiler aleatoriamente cerca de uma vez por hora durante dois minutos.
  • Gatilho de CPU: inicia o Profiler automaticamente quando a percentagem de utilização da CPU é superior a 80%.
  • Gatilho para memória: iniciar o Profiler quando o uso de memória está acima de 80%.

Pode configurar, ativar ou desativar cada um destes gatilhos.

Custos e despesas gerais

As Otimizações de Código são geradas automaticamente após o Application Insights Profiler for .NET estar ativado. Por defeito, o .NET Profiler recolhe traços a cada hora durante 30 segundos ou durante períodos de alto uso de CPU ou memória durante 30 segundos. Os traços horários (chamados de amostragem) são ótimos para ajustes proativos. Os traços elevados de CPU e memória (chamados de triggers) são úteis para a resolução de problemas reativos.

Observação

Quando o Application Insights Profiler para .NET está ativamente a correr e a recolher traços, normalmente adiciona entre 5% a 15% de sobrecarga de CPU e memória ao seu servidor.

Não há custo adicional para armazenar dados capturados pelo .NET Profiler. Os dados são automaticamente eliminados após 15 dias.

Algumas funcionalidades de Otimização de Código, como sugestões de correções ao nível do código, requerem GitHub Copilot ou Copilot no Azure.

Ativação do .NET Profiler

À medida que frameworks e serviços Azure evoluem, pode ativar o .NET Profiler para as suas aplicações .NET a correr no Azure usando diferentes opções.

Serviço do Azure Como ativar Detalhes
A maioria dos serviços Azure Alteração de código na sua aplicação
(mais universal)
Se a sua aplicação .NET funciona em variantes dos serviços PaaS ou Containers do Azure, pode escolher entre duas opções para ativar o .NET Profiler:
- Application Insights Profiler para ASP.NET Core que utiliza o SDK Application Insights, ou
- NewAzure Monitor OpenTelemetry Profiler for .NET (Preview) que utiliza Azure Monitor OpenTelemetry Distro
Serviço de Aplicações do Azure Nenhuma alteração de código para o seu aplicativo Como o Profiler está pré-instalado, pode ativar o Profiler para .NET no portal Azure para:
- Serviço de Aplicações do Azure - .NET aplicação no Windows
- Funções do Azure - Plano de App Service
Máquinas Virtuais Nenhuma alteração de código para o seu aplicativo Depois de ativar o Application Insights SDK no seu código de aplicação, pode ativar o Profiler para .NET no seu modelo ARM.
- Máquinas Virtuais do Azure e Conjuntos de Dimensionamento de Máquinas Virtuais para Windows
- Azure Service Fabric

Detalhes e exemplos para ativar o Profiler para .NET

Observação

Também pode usar o Java Profiler do Azure Monitor Application Insights, atualmente em pré-visualização.

Regiões suportadas

As otimizações de código estão disponíveis nas mesmas regiões do Application Insights. Verifique as regiões disponíveis usando o seguinte comando:

az account list-locations -o table

Define uma região explícita usando strings de ligação. Para mais informações, veja exemplos de cadeias de conexão.

Limitações

Limitações do .NET Profiler

  • Perfilização de aplicações web:
    • Pode usar o .NET Profiler sem custos adicionais, mas deve alojar a sua aplicação web pelo menos no nível Básico da funcionalidade Aplicações Web.
    • Você pode anexar apenas um criador de perfil a cada aplicativo Web.

Limitações das Otimizações de Código

  • Requisitos de armazenamento:
    • Atualmente, o Code Optimizations só funciona com o Profiler .NET predefinido ou o armazenamento Application Insights. Não é compatível com o Bring-Your-Own-Storage (BYOS).

Solução de problemas

Saiba como ativar o .NET Profiler com Otimizações de Código no seu serviço Azure: