Resolver problemas de desempenho lento da aplicação no Serviço de Aplicações do Azure

Este artigo ajuda-o a resolver problemas de desempenho lento da aplicação no Serviço de Aplicações do Azure.

Se precisar de mais ajuda em qualquer altura deste artigo, pode contactar os especialistas do Azure nos fóruns do MSDN Azure e do Stack Overflow. Em alternativa, também pode registar um incidente suporte do Azure. Aceda ao site de Suporte do Azure e clique em Obter Suporte.

Sintoma

Quando navega na aplicação, as páginas são carregadas lentamente e, por vezes, excedem o tempo limite.

Causa

Este problema é frequentemente causado por problemas ao nível da aplicação, tais como:

  • pedidos de rede que demoram muito tempo
  • o código da aplicação ou as consultas da base de dados estão a ser ineficazes
  • aplicação com memória/CPU elevada
  • falha da aplicação devido a uma exceção

Passos de resolução de problemas

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

  1. Observar e monitorizar o comportamento da aplicação
  2. Recolher dados
  3. Mitigar o problema

Serviço de Aplicações oferece-lhe várias opções em cada passo.

1. Observar e monitorizar o comportamento da aplicação

Controlar Estado de funcionamento dos serviços

O Microsoft Azure publica cada vez que existe uma interrupção do serviço ou degradação do desempenho. Pode controlar o estado de funcionamento do serviço no portal do Azure. Para obter mais informações, veja Controlar o estado de funcionamento do serviço.

Monitorizar a sua aplicação

Esta opção permite-lhe saber se a sua aplicação está a ter problemas. No painel da sua aplicação, clique no mosaico Pedidos e erros . O painel Métrica mostra-lhe todas as métricas que pode adicionar.

Algumas das métricas que poderá querer monitorizar para a sua aplicação são

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

monitorizar o desempenho da aplicação

Para obter mais informações, consulte:

Monitorizar o estado do ponto final Web

Se estiver a executar a sua aplicação no escalão de preço Standard, Serviço de Aplicações permite-lhe monitorizar dois pontos finais a partir de três localizações geográficas.

A monitorização de pontos finais configura testes Web a partir de localizações distribuídas geograficamente que testam o tempo de resposta e o tempo de atividade dos URLs Web. O teste executa uma operação HTTP GET no URL da Web para determinar o tempo de resposta e o tempo de atividade de cada localização. Cada localização configurada executa um teste a cada cinco minutos.

O tempo de atividade é monitorizado com códigos de resposta HTTP e o tempo de resposta é medido em milissegundos. Um teste de monitorização falha se o código de resposta HTTP for maior ou igual a 400 ou se a resposta demorar mais de 30 segundos. Um ponto final é considerado disponível se os testes de monitorização forem bem-sucedidos a partir de todas as localizações especificadas.

Para configurá-lo, veja Monitorizar aplicações no Serviço de Aplicações do Azure.

Além disso, veja Keeping Azure Web Sites up plus Endpoint Monitoring (Manter os Web Sites do Azure atualizados e a Monitorização de Pontos Finais) com Stefan Schackow para obter um vídeo sobre a monitorização de pontos finais.

Monitorização do desempenho da aplicação com Extensões

Também pode monitorizar o desempenho da sua aplicação com uma extensão de site.

Cada Serviço de Aplicações aplicação fornece um ponto final de gestão extensível que lhe permite utilizar um conjunto avançado de ferramentas implementadas como extensões de site. As extensões incluem:

  • Editores de código fonte como o Azure DevOps.
  • Ferramentas de gestão para recursos ligados, como uma base de dados MySQL ligada a uma aplicação.

Aplicação Azure Insights é uma extensão de site de monitorização de desempenho que também está disponível. Para utilizar o Application Insights, recrie o código com um SDK. Também pode instalar uma extensão que fornece acesso a dados adicionais. O SDK permite-lhe escrever código para monitorizar mais detalhadamente a utilização e o desempenho da sua aplicação. Para obter mais informações, veja Monitorizar o desempenho em aplicações Web.

2. Recolher dados

Serviço de Aplicações fornece funcionalidades de diagnóstico para informações de registo do servidor Web e da aplicação Web. As informações são separadas em diagnósticos de servidor Web e diagnósticos de aplicações.

Ativar diagnósticos do servidor Web

Pode ativar ou desativar os seguintes tipos de registos:

  • Registo de Erros Detalhado – informações detalhadas de erro para códigos de estado HTTP que indicam uma falha (código de estado 400 ou superior). Isto pode conter informações que podem ajudar a determinar o motivo pelo qual o servidor devolveu o código de erro.
  • Rastreio de Pedidos Falhados – informações detalhadas sobre pedidos falhados, incluindo um rastreio dos componentes do IIS utilizados para processar o pedido e o tempo decorrido em cada componente. Isto pode ser útil se estiver a tentar melhorar o desempenho da aplicação ou isolar o que está a causar um erro HTTP específico.
  • Registo de Servidor Web – informações sobre transações HTTP com o formato de ficheiro de registo expandido W3C. Isto é útil ao determinar as métricas gerais da aplicação, como o número de pedidos processados ou o número de pedidos de um endereço IP específico.

Ativar diagnósticos de aplicações

Existem várias opções para recolher dados de desempenho de aplicações de Serviço de Aplicações, criar perfis para a sua aplicação em direto a partir do Visual Studio ou modificar o código da aplicação para registar mais informações e rastreios. Pode escolher as opções com base na quantidade de acesso que tem à aplicação e no que observou nas ferramentas de monitorização.

Utilizar o Application Insights Profiler

Pode ativar o Application Insights Profiler para começar a capturar rastreios de desempenho detalhados. Pode aceder aos rastreios capturados há até cinco dias quando precisa de investigar problemas ocorridos no passado. Pode escolher esta opção desde que tenha acesso ao recurso do Application Insights da aplicação no portal do Azure.

O Application Insights Profiler fornece estatísticas sobre o tempo de resposta para cada chamada Web e rastreios que indicam qual a linha de código que causou as respostas lentas. Por vezes, a aplicação Serviço de Aplicações é lenta porque determinado código não é escrito de forma eficaz. Os exemplos incluem código sequencial que pode ser executado em contenção de bloqueio de base de dados paralela e indesejada. Remover estes estrangulamentos no código aumenta o desempenho da aplicação, mas são difíceis de detetar sem configurar rastreios e registos elaborados. Os rastreios recolhidos pelo Application Insights Profiler ajudam a identificar as linhas de código que atrasam a aplicação e superam este desafio para Serviço de Aplicações aplicações.

Para obter mais informações, veja Profiling live apps in Serviço de Aplicações do Azure with Application Insights (Criar perfis de aplicações em tempo real no Serviço de Aplicações do Azure com o Application Insights).

Utilizar a Criação de Perfis Remotos

No Serviço de Aplicações do Azure, as aplicações Web, as aplicações API, os back-ends móveis e os WebJobs podem ser criados 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 ocorre o problema de desempenho.

A Criação de Perfis Remotos é útil se a utilização da CPU do processo for elevada e o seu processo estiver a ser executado mais lentamente do que o esperado ou se a latência dos pedidos HTTP for superior ao normal, pode criar remotamente o perfil do seu processo e obter as pilhas de chamadas de amostragem da CPU para analisar a atividade do processo e os caminhos de acesso frequente do código.

Para obter mais informações, veja Suporte de Criação de Perfis Remotos no Serviço de Aplicações do Azure.

Configurar rastreios de diagnóstico manualmente

Se tiver acesso ao código fonte da aplicação Web, o Diagnóstico da aplicação permite-lhe capturar informações produzidas por uma aplicação Web. ASP.NET aplicações podem utilizar a System.Diagnostics.Trace classe para registar informações no registo de diagnóstico da aplicação. No entanto, tem de alterar o código e reimplementar a sua aplicação. Este método é recomendado se a sua aplicação estiver em execução num ambiente de teste.

Para obter instruções detalhadas sobre como configurar a sua aplicação para registo, veja Ativar o registo de diagnósticos para aplicações no Serviço de Aplicações do Azure.

Utilizar a ferramenta de diagnóstico

Serviço de Aplicações proporciona uma experiência inteligente e interativa para ajudá-lo a resolver problemas da sua aplicação sem ser necessária qualquer configuração. Quando se deparar com problemas com a sua aplicação, a ferramenta de diagnóstico irá indicar o que há de errado em guiá-lo para as informações certas para resolver o problema de forma mais fácil e rápida.

Para aceder Serviço de Aplicações diagnósticos, navegue para a sua aplicação Serviço de Aplicações ou Ambiente do Serviço de Aplicações no portal do Azure. No painel de navegação esquerdo, clique em Diagnosticar e resolver problemas.

Utilizar a Consola de Depuração kudu

Serviço de Aplicações inclui uma consola de depuração que pode utilizar para depurar, explorar, carregar ficheiros, bem como pontos finais JSON para obter informações sobre o seu ambiente. Esta consola é denominada Consola kudu ou Dashboard do SCM para a sua aplicação.

Pode aceder a este dashboard acedendo à ligação https://< O nome> da sua aplicação.scm.azurewebsites.net/.

Algumas das coisas que o Kudu fornece são:

  • definições de ambiente para a sua aplicação
  • fluxo de registos
  • captura de diagnóstico
  • consola de depuração na qual pode executar cmdlets do PowerShell e comandos básicos dos DOS.

Outra funcionalidade útil do Kudu é que, caso a sua aplicação esteja a lançar exceções de primeira oportunidade, pode utilizar o Kudu e a ferramenta SysInternals Procdump para criar capturas de memória. Estas capturas de memória são instantâneos do processo e, muitas vezes, podem ajudá-lo a resolver problemas mais complicados com a sua aplicação.

Para obter mais informações sobre as funcionalidades disponíveis no Kudu, consulte Ferramentas do Azure DevOps que deve conhecer.

3. Mitigar o problema

Dimensionar a aplicação

No Serviço de Aplicações do Azure, para aumentar o desempenho e o débito, pode ajustar a escala em que está a executar a sua aplicação. Aumentar verticalmente uma aplicação envolve duas ações relacionadas: alterar o seu plano de Serviço de Aplicações para um escalão de preço mais elevado e configurar determinadas definições depois de mudar para o escalão de preço mais elevado.

Para obter mais informações sobre o dimensionamento, veja Dimensionar uma aplicação no Serviço de Aplicações do Azure.

Além disso, pode optar por executar a sua aplicação em mais do que uma instância. Aumentar horizontalmente não só lhe fornece mais capacidade de processamento, como também lhe dá alguma tolerância a falhas. Se o processo ficar inativo numa instância, as outras instâncias continuarão a servir os pedidos.

Pode definir o dimensionamento como Manual ou Automático.

Utilizar o AutoHeal

O AutoHeal recicla o processo de trabalho da sua aplicação com base nas definições que escolher (como alterações de configuração, pedidos, limites baseados na memória ou o tempo necessário para executar um pedido). Na maioria das vezes, reciclar o processo é a forma mais rápida de recuperar de um problema. Embora possa sempre reiniciar a aplicação diretamente no portal do Azure, o AutoHeal fá-lo automaticamente por si. Tudo o que precisa de fazer é adicionar alguns acionadores na raiz web.config da sua aplicação. Estas definições funcionariam da mesma forma, mesmo que a sua aplicação não seja uma aplicação .NET.

Para obter mais informações, veja Recodução Automática de Web Sites do Azure.

Reiniciar a aplicação

Reiniciar é, muitas vezes, a forma mais simples de recuperar de problemas únicos. No portal do Azure, no painel da sua aplicação, tem as opções para parar ou reiniciar a sua aplicação.

reiniciar a aplicação para resolver problemas de desempenho

Também pode gerir a sua aplicação com 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 estrangulamentos de desempenho numa aplicação Web