Compartilhar via


Solucionar problemas de desempenho de aplicativo lento no Serviço de Aplicativo do Azure

Este artigo ajuda você a solucionar problemas de desempenho de aplicativo lento no Serviço de Aplicativo do Azure.

Se você precisar de mais ajuda a qualquer momento neste artigo, entre em contato com os especialistas do Azure no Suporte à Comunidade do Azure. Como alternativa, você pode registrar um incidente de suporte do Azure. Acesse o suporte do Azure e selecione Enviar um tíquete de suporte.

Sintoma

Quando você procura o aplicativo, as páginas carregam lentamente e, às vezes, o tempo limite é atingido.

Causa

Esse problema geralmente é causado por questões no nível de aplicativo, como:

  • Solicitações de rede demoram muito tempo
  • Código do aplicativo ou consultas de banco de dados sendo ineficientes
  • Aplicativo usando memória/CPU alta
  • Falha de aplicativo devido a uma exceção

Etapas para solucionar problemas

A solução de problemas pode ser dividida em três tarefas distintas, em ordem sequencial:

  1. Observar e monitorar o comportamento do aplicativo
  2. Coletar dados
  3. Atenuar o problema

O Serviço de Aplicativo oferece diversas opções em cada etapa.

Observar e monitorar o comportamento do aplicativo

Controlar a integridade do serviço

O Azure divulga cada interrupção de serviço ou degradação de desempenho. Você pode acompanhar a integridade do serviço no portal do Azure. Para obter mais informações, consulte Exibir notificações de integridade do serviço usando o portal do Azure.

Monitorar o aplicativo

Você pode usar ferramentas de monitoramento no portal do Azure para descobrir se seu aplicativo está tendo algum problema. Em Monitoramento no menu da barra lateral, selecione Métricas. O menu suspenso Métrica exibe todas as métricas que você pode adicionar.

Algumas das métricas que talvez você queira monitorar para seu aplicativo incluem:

  • Conjunto de trabalho de memória média
  • Tempo de CPU
  • Conjunto de trabalho de memória
  • Solicitações
  • Tempo de resposta

Captura de tela da seção de métricas em Monitoramento.

Para obter mais informações, consulte:

Monitorar o status de ponto de extremidade da Web

Se o aplicativo estiver em execução no tipo de preço Standard , o Serviço de Aplicativo permitirá que você monitore dois pontos de extremidade de três locais geográficos.

O monitoramento de ponto de extremidade configura testes da web de locais distribuídos geograficamente que testa o tempo de resposta e tempo de atividade de URLs de web. O teste executa uma operação HTTP GET na URL da Web para determinar o tempo de resposta e o tempo de atividade de cada local. Cada local configurado executa um teste a cada cinco minutos.

O tempo de atividade é monitorado usando códigos de resposta HTTP e o tempo de resposta é medido em milissegundos. Um teste de monitoramento falhará se o código de resposta HTTP for maior ou igual a 400 ou se a resposta demorar mais de 30 segundos. Um ponto de extremidade será considerado disponível caso seus testes de monitoramento tenham êxito a partir de todos os locais especificados.

Para configurá-lo, consulte cotas e métricas do Serviço de Aplicativo do Azure.

Monitoramento de desempenho do aplicativo usando extensões

Você também pode monitorar o desempenho do aplicativo usando uma extensão de site.

Cada aplicativo Web do Serviço de Aplicativo fornece um ponto de extremidade de gerenciamento extensível que permite a você usar um poderoso conjunto de ferramentas implantadas como extensões de site. As extensões incluem:

  • Editores de código-fonte, como os Codespaces do GitHub.
  • Ferramentas de gerenciamento para recursos conectados, tais como um banco de dados MySQL conectado a um aplicativo.

Azure Application Insights é uma extensão de site para monitoramento de desempenho que também está disponível. Para usar o Application Insights, você deve recompilar seu código com um SDK. Você também pode instalar uma extensão que forneça acesso a dados adicionais. O SDK permite que você escreva código para monitorar o uso e o desempenho de seu aplicativo em mais detalhes. Para obter mais informações, consulte Introdução ao Application Insights – Observabilidade do OpenTelemetry.

Coletar dados

O Serviço de Aplicativo oferece funcionalidade de diagnóstico para informações de log do servidor Web e do aplicativo Web. As informações estão separadas em diagnóstico de servidor Web e diagnóstico de aplicativos.

Habilitar o diagnóstico de servidor Web

Você pode habilitar ou desabilitar os seguintes tipos de logs:

  • Log de erros detalhado: informações detalhadas de erro para códigos de status HTTP que indicam uma falha (código de status 400 ou superior). Isso pode conter informações que podem ajudar a determinar por que o servidor retornou o código de erro.
  • Rastreamento de solicitação com falha: informações detalhadas sobre solicitações com falha, incluindo um rastreamento dos componentes do IIS usados para processar a solicitação e o tempo gasto em cada componente. Isso pode ser útil se você estiver tentando melhorar o desempenho do aplicativo ou isolar o que está causando um erro HTTP específico.
  • Log do Servidor Web: informações sobre transações HTTP usando o formato de arquivo de log estendido W3C. Isso é útil para determinar as métricas gerais do aplicativo, como o número de solicitações manipuladas ou quantas solicitações são de um endereço IP específico.

Habilitar o diagnóstico de aplicativos

Há várias opções para coletar dados de desempenho do aplicativo do Serviço de Aplicativo, criar o perfil do aplicativo ao vivo por meio do Visual Studio ou modificar o código do aplicativo para registrar mais informações e rastreamentos em log. Você pode escolher as opções com base no nível de acesso que tem ao aplicativo e no que observou por meio das ferramentas de monitoramento.

Use o Application Insights Profiler

Você pode habilitar o Application Insights Profiler para iniciar a captura de rastreamentos de desempenho detalhados. Você pode acessar rastreamentos capturados até cinco dias atrás quando precisar investigar problemas. Você pode escolher essa opção, contanto que tenha acesso ao recurso do Application Insights do aplicativo no portal do Azure.

O Application Insights Profiler fornece estatísticas sobre o tempo de resposta para cada chamada da Web e rastreamentos que indicam qual linha de código causou as respostas lentas. Às vezes, o aplicativo do Serviço de Aplicativo é lento porque determinado código não é escrito de maneira performante. Exemplos incluem um código sequencial que pode ser executado em contenções de bloqueio do banco de dados paralelas e indesejadas. Remover esses gargalos no código aumenta o desempenho do aplicativo, mas eles são difíceis de detectar sem configurar rastreamentos e logs elaborados. Os rastreamentos coletados pelo Application Insights Profiler ajudam a identificar as linhas de código que deixam o aplicativo lento e a superar esse desafio para os aplicativos do Serviço de Aplicativo.

Para obter mais informações, consulte Habilitar o .NET Profiler para aplicativos do Serviço de Aplicativo do Azure no Windows.

Configurar manualmente os rastreamentos de diagnóstico

Se você tiver acesso ao código-fonte do aplicativo Web, o diagnóstico do aplicativo permitirá que você capture informações produzidas por um aplicativo Web. Os aplicativos ASP.NET podem usar a classe System.Diagnostics.Trace para registrar informações no log de diagnóstico do aplicativo. No entanto, você precisa alterar o código e reimplantar o aplicativo. Esse método é recomendado se o aplicativo está sendo executado em um ambiente de teste.

Para obter instruções detalhadas sobre como configurar seu aplicativo para registro de logs, consulte Habilitar o log de diagnóstico para aplicativos no Serviço de Aplicativo do Azure.

Use a ferramenta de diagnóstico

O Serviço de Aplicativo fornece uma experiência inteligente e interativa para ajudar você a solucionar problemas do seu aplicativo, sem a necessidade de configuração. Quando você tiver problemas com seu aplicativo, a ferramenta de diagnóstico aponta o que há de errado em guiá-lo para as informações certas para solucionar o problema com mais facilidade e rapidez.

Para acessar o diagnóstico do Serviço de Aplicativo, navegue até seu aplicativo Serviço de Aplicativo ou Ambiente do Serviço de Aplicativo no Portal do Azure. No menu da barra lateral, selecione Diagnosticar e resolver problemas.

Usar o Console de Depuração Kudu

O Serviço de Aplicativo vem com um console de depuração que você pode usar para depurar, explorar e carregar arquivos, incluindo pontos de extremidade JSON para obter informações sobre o ambiente. Esse console chama o Console Kudu ou o Painel SCM do seu aplicativo.

Você pode acessar esse painel acessando seu site do Kudu.

Estas são algumas das coisas que o Kudu fornece:

  • Configurações de ambiente para seu aplicativo
  • Fluxo de log
  • Despejos de diagnóstico
  • Console de depuração no qual você pode executar cmdlets do PowerShell e comandos básicos do DOS

Outro recurso útil do Kudu é que, caso seu aplicativo esteja lançando exceções de primeira chance, você pode usar o Kudu e o despejo de processo da ferramenta SysInternals para criar despejos de memória. Esses despejos de memória são instantâneos do processo e podem frequentemente ajudá-lo a solucionar problemas mais complexos com seu aplicativo.

Para obter mais informações sobre os recursos disponíveis no Kudu, consulte as ferramentas online dos Sites do Windows Azure sobre as quais você deve saber.

Atenuar o problema

Escalar o aplicativo

No Serviço de Aplicativo, para aumentar o desempenho e a taxa de transferência, você pode ajustar a escala na qual está executando seu aplicativo. O dimensionamento de um aplicativo envolve duas ações relacionadas: alterar o plano do Serviço de Aplicativo para um tipo de preço mais alto e definir determinadas configurações depois que você alternar para o tipo de preço mais alto.

Para saber mais sobre como dimensionar, consulte Escalar um aplicativo no Serviço de Aplicativo do Azure.

Além disso, você pode optar por executar o aplicativo em mais de uma instância. Escalar horizontalmente não apenas fornece mais capacidade de processamento, como também oferece alguma quantidade de tolerância a falhas. Se o processo falhar em uma instância, as outras instâncias ainda continuarão atendendo a solicitações.

Você pode definir o dimensionamento como manual ou automático.

Usar a cura automática

A recuperação automática recicla o processo de trabalho para seu aplicativo com base nas configurações escolhidas, como alterações de configuração, solicitações, limites baseados em memória ou o tempo necessário para executar uma solicitação. Na maioria das vezes, reciclar o processo é a maneira mais rápida de se recuperar de um problema. Embora você sempre possa reiniciar o aplicativo diretamente no portal do Azure, a recuperação automática faz isso automaticamente para você. Tudo que você precisa fazer é adicionar alguns gatilhos na raiz web.config do seu aplicativo. Essas configurações funcionariam da mesma maneira, mesmo que seu aplicativo não seja um aplicativo .NET.

Para saber mais, consulte AutoHeal em sites do Azure.

Reiniciar o aplicativo

Reiniciar é geralmente a maneira mais simples de se recuperar de problemas de uso únicos. No portal do Azure, você tem as opções para interromper ou reiniciar seu aplicativo.

Captura de tela da barra de menus do aplicativo com botões parar e reiniciar.

Também é possível gerenciar o aplicativo usando o Azure PowerShell. Para obter mais informações, consulte Gerenciar recursos do Azure usando o Azure PowerShell.