Partilhar via


Resolver problemas de desempenho lento das aplicações Web no Serviço de Aplicações do Azure

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

Se precisar de mais ajuda em qualquer ponto deste artigo, entre em contato com os especialistas do Azure nos fóruns MSDN Azure e Stack Overflow. Como alternativa, você também pode registrar um incidente de suporte do Azure. Vá para o site de Suporte do Azure e clique em Obter Suporte.

Sintoma

Quando você navega no aplicativo, as páginas carregam lentamente e, às vezes, expiram.

Motivo

Esse problema geralmente é causado por problemas no nível do aplicativo, como:

  • Solicitações de rede demorando muito tempo
  • código de aplicativo ou consultas de banco de dados sendo ineficientes
  • A aplicação utiliza memória/CPU elevadas.
  • Falha do aplicativo devido a uma exceção

Passos de resolução de problemas

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

  1. Observe e monitore o comportamento do aplicativo
  2. Recolha de dados
  3. Atenuar o problema

O Serviço de Aplicativo oferece várias opções em cada etapa.

1. Observe e monitore o comportamento do aplicativo

Rastreie a integridade do serviço

O Microsoft Azure publica sempre que há uma 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 Controlar a integridade do serviço.

Monitore seu aplicativo

Esta opção permite-lhe descobrir se a sua aplicação está a ter problemas. Na folha do seu aplicativo, clique no bloco Solicitações e erros . A folha Métrica mostra todas as métricas que você pode adicionar.

Algumas das métricas que você pode querer monitorar para seu aplicativo são:

  • Conjunto de trabalho de memória médio
  • Tempo de resposta
  • Tempo de CPU
  • Conjunto de trabalho de memória
  • Pedidos do

Monitore o desempenho do aplicativo

Para obter mais informações, consulte:

Monitorar o status do ponto de extremidade da Web

Se você estiver executando seu aplicativo na camada de preço Padrão, o Serviço de Aplicativo permitirá monitorar dois pontos de extremidade de três localizações geográficas.

O monitoramento de pontos finais configura testes da Web a partir de locais distribuídos geograficamente que testam o tempo de resposta e o tempo de atividade de URLs da 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 é considerado disponível se seus testes de monitoramento forem bem-sucedidos em todos os locais especificados.

Para configurá-lo, consulte Monitorar aplicativos no Serviço de Aplicativo do Azure.

Além disso, consulte Keeping Azure Web Sites up plus Endpoint Monitoring - with Stefan Schackow para obter um vídeo sobre monitoramento de ponto final.

Monitoramento de desempenho de aplicativos usando extensões

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

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

  • Editores de código-fonte como o Azure DevOps.
  • Ferramentas de gerenciamento para recursos conectados, como um banco de dados MySQL conectado a um aplicativo.

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

2. Recolha de dados

O Serviço de Aplicativo fornece funcionalidade de diagnóstico para registrar informações do servidor Web e do aplicativo Web. As informações são separadas em diagnóstico do servidor Web e diagnóstico do aplicativo.

Habilitar o diagnóstico do servidor Web

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

  • Registo detalhado de erros - Informações detalhadas sobre erros para códigos de estado HTTP que indicam uma falha (código de estado 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 do W3C. Isso é útil ao determinar as métricas gerais do aplicativo, como o número de solicitações tratadas 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 do Visual Studio ou modificar o código do aplicativo para registrar mais informações e rastreamentos. Você pode escolher as opções com base em quanto acesso você tem ao aplicativo e o que você observou a partir das ferramentas de monitoramento.

Usar o Application Insights Profiler

Você pode habilitar o Application Insights Profiler para começar a capturar rastreamentos de desempenho detalhados. Você pode acessar rastreamentos capturados até cinco dias atrás, quando precisar investigar problemas ocorridos no passado. Você pode escolher essa opção desde que tenha acesso ao recurso 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 forma eficiente. Os exemplos incluem código sequencial que pode ser executado em contenções de bloqueio de banco de dados paralelas e indesejadas. Remover esses gargalos no código aumenta o desempenho do aplicativo, mas eles são difíceis de detetar sem configurar rastreamentos e logs elaborados. Os rastreamentos coletados pelo Application Insights Profiler ajudam a identificar as linhas de código que tornam o aplicativo mais lento e superam esse desafio para os aplicativos do Serviço de Aplicativo.

Para obter mais informações, consulte Criação de perfil de aplicativos dinâmicos no Serviço de Aplicativo do Azure com o Application Insights.

Usar a criação de perfil remota

No Serviço de Aplicativo do Azure, aplicativos Web, aplicativos de API, back-ends móveis e WebJobs podem ser perfilados remotamente. Escolha esta opção se tiver acesso ao recurso da aplicação e souber como reproduzir o problema ou se souber o intervalo de tempo exato em que o problema de desempenho acontece.

A criação de perfil remota é útil se o uso da CPU do processo for alto e o processo estiver sendo executado mais lentamente do que o esperado, ou se a latência das solicitações HTTP for maior do que o normal, você poderá criar o perfil do processo remotamente e obter as pilhas de chamadas de amostragem da CPU para analisar a atividade do processo e codificar caminhos quentes.

Para obter mais informações, consulte Suporte de criação de perfil remoto no Serviço de Aplicativo do Azure.

Configurar rastreamentos de diagnóstico manualmente

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

Para obter instruções detalhadas sobre como configurar seu aplicativo para log, 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 ajudá-lo a solucionar problemas do seu aplicativo sem a necessidade de configuração. Quando você tiver problemas com seu aplicativo, a ferramenta de diagnóstico apontará o que está errado para guiá-lo para as informações certas para solucionar e resolver o problema com mais facilidade e rapidez.

Para acessar o diagnóstico do Serviço de Aplicativo, navegue até seu aplicativo do Serviço de Aplicativo ou Ambiente do Serviço de Aplicativo no portal do Azure. Na navegação à esquerda, clique em Diagnosticar e resolver problemas.

Use o Kudu Debug Console

O Serviço de Aplicativo vem com um console de depuração que você pode usar para depurar, explorar, carregar arquivos, bem como pontos de extremidade JSON para obter informações sobre seu ambiente. Este console é chamado de Kudu Console ou SCM Dashboard para seu aplicativo.

Você pode acessar esse painel acessando o link https:// Nome do aplicativo.scm.azurewebsites.net/><.

Algumas das coisas que Kudu fornece são:

  • Configurações de ambiente para seu aplicativo
  • fluxo de log
  • despejo 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 a ferramenta SysInternals Procdump para criar despejos de memória. Esses despejos de memória são instantâneos do processo e muitas vezes podem ajudá-lo a solucionar problemas mais complicados com seu aplicativo.

Para obter mais informações sobre os recursos disponíveis no Kudu, consulte Ferramentas de DevOps do Azure que você deve conhecer.

3. Atenuar o problema

Dimensione a aplicação

No Serviço de Aplicativo do Azure, para aumentar o desempenho e a taxa de transferência, você pode ajustar a escala na qual está executando seu aplicativo. A expansão de um aplicativo envolve duas ações relacionadas: alterar seu plano do Serviço de Aplicativo para um nível de preço mais alto e definir determinadas configurações depois que você mudar para o nível de preço mais alto.

Para obter mais informações sobre dimensionamento, consulte Dimensionar um aplicativo no Serviço de Aplicativo do Azure.

Além disso, você pode optar por executar seu aplicativo em mais de uma instância. A expansão não só fornece mais capacidade de processamento, mas também oferece alguma tolerância a falhas. Se o processo cair em uma instância, as outras instâncias continuarão a atender solicitações.

Você pode definir o dimensionamento como Manual ou Automático.

Utilize a Autorrecuperação

O AutoHeal 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, o AutoHeal faz isso automaticamente para você. Tudo o que você precisa fazer é adicionar alguns gatilhos no web.config raiz do seu aplicativo. Essas configurações funcionariam da mesma maneira, mesmo se seu aplicativo não for um aplicativo .NET.

Para obter mais informações, consulte Auto-Healing Azure Web Sites.

Reinicie a aplicação

A reinicialização geralmente é a maneira mais simples de se recuperar de problemas únicos. No portal do Azure, na folha do seu aplicativo, você tem as opções para parar ou reiniciar seu aplicativo.

Reinicie o aplicativo para resolver problemas de desempenho

Você também pode gerenciar seu aplicativo usando o Azure PowerShell. Para obter mais informações, veja Using Azure PowerShell with Azure Resource Manager (Utilizar o Azure PowerShell com o Azure Resource Manager).

Mais recursos

Tutorial: Executar um teste de carga para identificar gargalos de desempenho em um aplicativo Web