Desempenho, disponibilidade e problemas de aplicativos Web no Serviço de Aplicativo do Azure

Observação

Algumas das diretrizes a seguir podem funcionar apenas no Serviço aplicativo do Windows ou no Serviço de Aplicativo Linux. Por exemplo, o Serviço de Aplicativo linux é executado no modo de 64 bits por padrão.

Resumo

Este artigo responde a perguntas frequentes sobre problemas de desempenho de aplicativos para o recurso de aplicativos Web de Serviço de Aplicativo do Azure.

Onde posso obter mais informações sobre cotas e limites de vários planos do Serviço de Aplicativo?

Para obter informações sobre cotas e limites, consulte limites de Serviço de Aplicativo.

Meu plano do Serviço de Aplicativo exibe o uso de CPU ou memória mesmo quando todos os aplicativos Web são interrompidos

O Serviço de Aplicativo requer processos contínuos do sistema que lidam com várias operações e recursos de plataforma, como atualizações de segurança, disponibilidade do console do SCM (Kudu), monitoramento de aplicativos, autenticação e muitos outros recursos de aplicativo Web.

Os processos do sistema são executados nos planos do Serviço de Aplicativo, mesmo que não haja aplicativos Web em execução ou se o plano do Serviço de Aplicativo não contiver nenhum aplicativo Web.

Os processos da plataforma consomem uma quantidade mínima de recursos (como CPU, memória e espaço em disco), e você deve considerar esses recursos durante o planejamento de capacidade, o monitoramento e a configuração dos disparadores de dimensionamento automático de um plano do App Service.

O desempenho do meu aplicativo está lento

Vários fatores podem contribuir para diminuir o desempenho do aplicativo. Para obter as etapas detalhadas de solução de problemas, consulte Solucionar problemas de desempenho lento do aplicativo Web.

Dica

  • Habilite a opção Always On em Configuração>Configurações gerais para manter seu aplicativo aquecido e evitar inícios frios. Essa configuração ajuda a reduzir o atraso após o tempo ocioso, especialmente em planos Básicos e superiores.
  • Configure um caminho de verificação de integridade para monitorar a integridade do aplicativo e substituir automaticamente instâncias sem resposta. Essa configuração ajuda a manter a disponibilidade e o desempenho. Para obter mais informações, consulte Monitorar instâncias do Serviço de Aplicativo usando a verificação de integridade.

Como solucionar problemas de alto consumo de CPU?

Em alguns cenários de alto consumo de CPU, seu aplicativo pode realmente exigir mais recursos de computação. Nesse caso, considere a possibilidade de dimensionar para uma camada de serviço superior para que o aplicativo obtenha todos os recursos necessários. Outras vezes, o alto consumo de CPU pode ser causado por um loop ou uma prática de codificação incorretos. Obter informações sobre o que está causando o aumento de consumo da CPU é um processo de duas partes. Primeiro, crie um dump do processo e, em seguida, analise o dump do processo. Para obter mais informações, consulte Capturar e analisar um arquivo de despejo em caso de alto consumo de CPU em Aplicativos Web.

Como solucionar problemas de alto consumo de memória?

Em alguns cenários de alto consumo de memória, seu aplicativo pode realmente exigir mais recursos de computação. Nesse caso, considere a possibilidade de dimensionar para uma camada de serviço superior para que o aplicativo obtenha todos os recursos necessários. Outras vezes, um bug no código pode causar um vazamento de memória. Uma prática de codificação também pode aumentar o consumo de memória. Obter informações sobre o que está causando o aumento de consumo da memória é um processo de duas partes. Primeiro, crie um dump do processo e, em seguida, analise o dump do processo. O Crash Diagnoser da Galeria de Extensões de Site do Azure pode executar essas duas etapas com eficiência. Para obter mais informações, consulte Captura e análise de um arquivo de despejo para alto uso intermitente de memória em Aplicativos Web.

Como posso automatizar aplicativos Web do Serviço de Aplicativo com o PowerShell?

Você pode usar os cmdlets do PowerShell para gerenciar e manter os aplicativos Web do Serviço de Aplicativo. Consulte Automatizar aplicativos Web hospedados em Serviço de Aplicativo do Azure usando o PowerShell para obter mais informações sobre como usar cmdlets do PowerShell baseados em Azure Resource Manager para automatizar tarefas comuns.

Observação

Para scripts de automação atuais, use o módulo Az.Websites mais recente. O módulo mais antigo AzureRM foi preterido.

Preciso coletar informações para solucionar problemas do meu aplicativo Web

Exibir os logs de eventos de um aplicativo Web

Para exibir os logs de eventos de um aplicativo Web, siga estas etapas:

  1. Entre no site Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
  2. No menu, selecione Console de depuração>CMD.
  3. Abra a pasta LogFiles.
  4. Para exibir logs de eventos, selecione o ícone de lápis ao lado de eventlog.xml.
  5. Para baixar os logs, execute o cmdlet do PowerShell Save-AzureWebSiteLog -Name webappname.

Capturar um despejo de memória no modo de usuário de um aplicativo Web

Para capturar um despejo de memória no modo de usuário de um aplicativo Web, siga estas etapas:

  1. Entre no site Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Selecione o menu Process Explorer.
  3. Clique com botão direito no processo w3wp.exe ou no seu processo WebJob.
  4. Selecione Baixar o despejo de memória>Despejo completo.

Exibir informações de nível de processo para um aplicativo Web

Você tem duas opções para exibir as informações de nível de processo para seu aplicativo web:

  • No portal do Azure:

    1. Abra o Process Explorer para o aplicativo web.
    2. Para ver os detalhes, selecione o w3wp.exe processo.
  • No console do Kudu:

    1. Entre no site Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
    2. Selecione o menu Process Explorer.
    3. Para o processo w3wp.exe, selecione Propriedades.

Não consigo encontrar meus arquivos de log na estrutura de pastas do meu aplicativo Web ao usar o recurso de cache local do Serviço de Aplicativo

Se você usar o recurso de cache local do Serviço de Aplicativo, ele afetará a estrutura de pastas das pastas LogFiles e Dados para sua instância do Serviço de Aplicativo. Quando o cache local é usado, o sistema cria subpastas nas pastas LogFiles e Dados de armazenamento. As subpastas seguem o padrão de nomenclatura "identificador exclusivo" seguido de marca de data e hora. Cada subpasta corresponde a uma instância de VM (máquina virtual) na qual o aplicativo Web está em execução ou foi executado.

Para determinar se você está usando o cache local, verifique a guia Configurações do Aplicativo do Serviço de Aplicativo. Se o sistema usar o cache local, a configuração WEBSITE_LOCAL_CACHE_OPTION do aplicativo será definida como Always.

Para ativar o rastreamento de solicitações com falhas

Para ativar o rastreamento de solicitação com falha, siga estas etapas:

  1. No portal do Azure, vá para seu aplicativo web.

  2. Selecione Todas as configurações>Logs de diagnóstico.

  3. Para Rastreamento de Solicitações com Falha, selecione Ativado.

  4. Selecione Salvar.

  5. Na folha de aplicativo Web, selecione Ferramentas.

  6. Selecione Visual Studio Online.

  7. Se a configuração não estiver definida como Ativada, selecione Ativada.

  8. Selecione Ir.

  9. Selecione Web.config.

  10. Em system.webServer, adicione a seguinte configuração (para capturar uma URL específica):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*api*" />
    <add path="*api*">
    <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  11. Para solucionar problemas de desempenho lento, adicione essa configuração (se a solicitação de captura está demorando mais de 30 segundos):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*" />
    <add path="*">
    <traceAreas> <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  12. Para baixar os rastreamentos de solicitações com falha, no portal do Azure, acesse seu site.

  13. Selecione Ferramentas>Kudu>Go.

  14. No menu, selecione Console de depuração>CMD.

  15. Selecione a pasta LogFiles e, em seguida, selecione a pasta com um nome que começa com W3SVC.

  16. Para ver o arquivo XML, selecione o ícone de lápis.

Recomendações adicionais para desempenho e resiliência

  • Utilize o Application Insights e o Azure Monitor para a observabilidade completa do seu aplicativo no App Service, incluindo telemetria, rastreamento de dependências e métricas ao vivo.

  • Se você estiver implantando em regiões que dão suporte a zonas de disponibilidade, considere habilitar a redundância de zona para melhorar a resiliência durante interrupções regionais. Para obter mais informações, consulte Confiabilidade no Serviço de Aplicativo do Azure.

  • O Serviço de Aplicativo passa por manutenção de rotina para garantir a confiabilidade da plataforma. Para obter mais controle sobre o comportamento da atualização, especialmente no Ambiente do Serviço de Aplicativo v3, configure a preferência de atualização. Para obter mais informações, consulte a manutenção de rotina (planejada) para o Serviço de Aplicativo do Azure.