Compartilhar via


Perguntas frequentes do desempenho do aplicativo para Aplicativos Web no Azure

Observação

Algumas das diretrizes abaixo podem funcionar apenas nos Serviços de Aplicativos do Windows ou do Linux. Por exemplo, os Serviços de Aplicativos do Linux são executados no modo de 64 bits por padrão.

Este artigo apresenta respostas para perguntas frequentes (FAQs) sobre problemas de desempenho de aplicativo da funcionalidade Aplicativos Web do Serviço de Aplicativo do Azure.

Se o problema do Azure não for resolvido neste artigo, visite os fóruns do Azure no MSDN e Stack Overflow. Você pode postar seu problema nesses fóruns ou enviar para@AzureSupport no Twitter. Você também pode enviar uma solicitação de suporte do Azure. Para enviar uma solicitação de suporte na página Suporte do Azure, selecione Obter suporte.

Por que meu Plano do Serviço de Aplicativo está exibindo o uso de CPU/Memória mesmo quando todos os Aplicativos Web são interrompidos?

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

Os processos do sistema serão executados em Planos do Serviço de Aplicativo mesmo se não houver nenhum aplicativo Web em execução ou se o Plano do Serviço de Aplicativo não contiver nenhum aplicativo Web.

Os processos da plataforma consumirão uma quantidade mínima de recursos (como CPU, memória e espaço em disco), e o mesmo deve ser contabilizado durante o planejamento de capacidade, monitoramento e configuração de gatilho de dimensionamento automático de um Plano do Serviço de Aplicativo.

Por que o 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.

Como solucionar problemas de um cenário de alto consumo de CPU?

Em alguns cenários de alto consumo de CPU, seu aplicativo pode exigir realmente 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 despejo de processo e, em seguida, analise o despejo de processo. Para obter mais informações, consulte Capturar e analisar um arquivo de despejo para alto consumo de CPU para aplicativos Web.

Como solucionar problemas de um cenário de alto consumo de memória?

Em alguns cenários de alto consumo de memória, seu aplicativo pode exigir realmente 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 despejo de processo e, em seguida, analise o despejo de processo. Diagnóstico de falha da Galeria de extensão de Site do Azure pode executar com eficiência as seguintes etapas. Para obter mais informações, consulte Capturar e analisar um arquivo de despejo de memória alta intermitente para aplicativos Web.

Como automatizar a Aplicativos Web do Serviço de Aplicativo usando o PowerShell?

Você pode usar os cmdlets do PowerShell para gerenciar e manter os aplicativos Web do Serviço de Aplicativo. Em nossa postagem do blog Automatizar os aplicativos Web hospedados no Serviço de Aplicativo do Azure usando o PowerShell, descrevemos como usar Azure Resource Manager com base nos cmdlets do PowerShell para automatizar tarefas comuns. A postagem do blog também tem o código de exemplo para várias tarefas de gerenciamento de aplicativos web. Para obter descrições e sintaxe para todos os cmdlets de aplicativos Web do Serviço de Aplicativo, consulte Az.Websites.

Como exibir os logs de eventos do aplicativo web?

Para exibir logs de eventos do aplicativo web:

  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.

Como capturar um despejo de memória do modo de usuário do meu aplicativo web?

Para capturar um despejo de memória do modo de usuário do seu aplicativo web:

  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.

Como exibir informações de nível de processo para meu 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.

Quando navego até meu aplicativo, vejo "Erro 403 - Este aplicativo Web está parado". Como faço para resolver isso?

Três condições podem causar esse erro:

  • O aplicativo web atingiu um limite de cobrança e seu site foi desabilitado.
  • O aplicativo web foi interrompido no portal.
  • O aplicativo web atingiu um limite de cota de recursos que pode se aplicar a um plano de serviço de escala gratuito ou compartilhado.

Para ver o que está causando o erro e resolver o problema, siga as etapas em aplicativos web: "Erro 403 – Este aplicativo web foi interrompido".

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.

Como diminuir o tempo de resposta para a primeira solicitação após o tempo ocioso?

Por padrão, os aplicativos Web serão descarregados se estiverem ociosos por um determinado período de tempo. Dessa forma, o sistema pode conservar recursos. A desvantagem é que a resposta à primeira solicitação depois que o aplicativo web é descarregado é mais longa, para permitir que o aplicativo web carregue e comece a enviar respostas. Em planos de serviço básico e padrão, você pode ativar a configuração Sempre Ativo para manter o aplicativo sempre carregado. Isso elimina tempos de carga após o aplicativo estar ocioso. Para alterar a configuração Sempre Ativo:

  1. No portal do Azure, vá para seu aplicativo web.
  2. Selecione Configuração
  3. Selecione Configurações gerais.
  4. Para Sempre Ativo, selecione On.

Como ativar o rastreamento de solicitação com falha?

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ção com falha, selecione On.

  4. Selecione Salvar.

  5. Na folha de aplicativo Web, selecione Ferramentas.

  6. Selecione Visual Studio Online.

  7. Se a configuração não estiver 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ção com falha, no portal, vá para 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.

Vejo a mensagem "Processo de trabalho solicitado a reciclagem devido ao limite de 'Porcentagem de memória'". Como faço para resolver esse problema?

A quantidade máxima disponível de memória para um processo de 32 bits (mesmo em um sistema operacional de 64 bits) é 2 GB. Por padrão, o processo de trabalho é definido para 32 bits no Serviço de Aplicativo (para compatibilidade com aplicativos web herdada).

Considere alterar processos de 64 bits, de forma que você possa tirar proveito da memória adicional disponível em sua função Web Worker. Essa ação dispara uma reinicialização do aplicativo Web, portanto, agende de acordo.

Observe também que um ambiente de 64 bits requer um plano de serviço básico ou padrão. Planos gratuito ou compartilhado são sempre executados em um ambiente de 32 bits.

Para obter mais informações, consulte Configurar aplicativos web no Serviço de Aplicativo.

Por que minha solicitação atinge o tempo limite após 230 segundos?

O Azure Load Balancer tem uma configuração de tempo limite de ociosidade padrão de quatro minutos. Essa configuração geralmente é um limite de tempo de resposta razoável para uma solicitação da Web. portanto, o Serviço de Aplicativo retornará um tempo limite para o cliente se o aplicativo não retornar uma resposta em aproximadamente 240 segundos (230 segundos no aplicativo Windows, 240 segundos no aplicativo Linux). Se seu aplicativo web requer o processamento em segundo plano, é recomendável usar o Azure WebJobs. O aplicativo web do Azure pode chamar WebJobs e ser notificado quando o processamento em segundo plano estiver concluído. Você pode escolher entre vários métodos para usar WebJobs, inclusive filas e gatilhos.

O WebJobs foi projetado para processamento em segundo plano. Você pode fazer quantos processamentos em segundo plano desejar em um WebJob. Para obter mais informações sobre WebJobs, consulte Executar tarefas em segundo plano com o WebJobs.

Aplicativos ASP.NET Core que são hospedados no Serviço de Aplicativo, às vezes, param de responder. Como faço corrigir esse problema?

Um problema conhecido com uma versão Kestrel anterior pode fazer com que um aplicativo do ASP.NET Core 1.0 que está hospedado no Serviço de Aplicativo interrompa as respostas intermitentemente. Você também pode ver esta mensagem: "O aplicativo CGI especificado encontrou um erro e o servidor encerrou o processo."

Esse problema foi corrigido no Kestrel versão 1.0.2. Esta versão está incluída na atualização do ASP.NET Core 1.0.3. Para resolver esse problema, certifique-se de atualizar suas dependências de aplicativo para usar o Kestrel 1.0.2. Como alternativa, você pode usar uma das duas soluções alternativas que são descritas na postagem do blog Problemas de desempenho lento do ASP.NET Core 1.0 em aplicativos web do Serviço de Aplicativo.

Não é possível localizar meus arquivos de log na estrutura de arquivos do meu aplicativo web. Como posso encontrá-los?

Se você usar o recurso de Cache Local do Serviço de Aplicativo, a estrutura de pasta de arquivos de log e das pastas de dados para a instância do Serviço de Aplicativo serão afetados. Quando o Cache Local é usado, as subpastas são criadas nas pastas de dados e arquivos de log de armazenamento. As subpastas usam padrão de nomenclatura "identificador exclusivo" + carimbo de data/hora. Cada uma das subpastas corresponde a uma instância de VM na qual o aplicativo Web está executando 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 Cache local estiver sendo usado, a configuração WEBSITE_LOCAL_CACHE_OPTION do aplicativo será definida como Always.

Se você não estiver usando o Cache Local e estiver enfrentando esse problema, envie uma solicitação de suporte.

Vejo a mensagem "Foi feita uma tentativa de acessar um soquete de uma forma proibida por suas permissões de acesso". Como resolvo esse erro?

Esse erro normalmente ocorre se as conexões TCP de saída na instância de VM são esgotadas. No Serviço de Aplicativo, os limites são aplicados para o número máximo de conexões de saída que podem ser feitas para cada instância VM. Para obter mais informações, consulte limites numéricos entre-VM.

Esse erro também pode ocorrer se você tentar acessar um endereço local do seu aplicativo. Para obter mais informações, consulte Solicitações de endereço local.

Para obter mais informações sobre conexões de saída em seu aplicativo web, consulte a postagem de blog sobre conexões de saída a sites do Azure.

Como usar o Visual Studio para depuração remota do o meu aplicativo web do Serviço de Aplicativo?

Para obter uma explicação detalhada que mostra como depurar seu aplicativo web usando o Visual Studio, consulte Depuração remota do seu aplicativo web do Serviço de Aplicativo.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.