Perguntas frequentes sobre o desempenho do aplicativo para Aplicativos Web no Azure

Observação

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

Este artigo tem respostas para perguntas frequentes (perguntas frequentes) sobre problemas de desempenho do aplicativo para o recurso Aplicativos Web de Serviço de Aplicativo do Azure.

Se o seu problema do Azure não for abordado neste artigo, visite os fóruns do Azure em MSDN e Stack Overflow. Você pode postar seu problema nesses fóruns ou postar em @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 de Serviço de Aplicativo está exibindo o uso de CPU/Memória mesmo quando todos os Aplicativos Web são interrompidos?

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

Os processos do sistema serão executados em Serviço de Aplicativo Planos, mesmo que não haja Aplicativos Web em execução ou se o Plano Serviço de Aplicativo não contiver Aplicativos Web.

Os processos de 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 de Serviço de Aplicativo.

Por que meu aplicativo está lento?

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

Como fazer solucionar um cenário 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 escalar para uma camada de serviço mais alta para que o aplicativo obtenha todos os recursos necessários. Outras vezes, o alto consumo de CPU pode ser causado por um loop ruim ou por uma prática de codificação. Obter informações sobre o que está disparando o aumento do consumo de CPU é um processo de duas partes. Primeiro, crie um despejo de processo e, em seguida, analise o despejo do processo. Para obter mais informações, consulte Capturar e analisar um arquivo de despejo para alto consumo de CPU para Aplicativos Web.

Como fazer solucionar um cenário 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 escalar para uma camada de serviço mais alta 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á disparando o alto consumo de memória é um processo de duas partes. Primeiro, crie um despejo de processo e, em seguida, analise o despejo do processo. O Diagnóstico de Falha da Galeria de Extensão de Site do Azure pode executar essas duas etapas com eficiência. Para obter mais informações, consulte Capturar e analisar um arquivo de despejo para memória alta intermitente para Aplicativos Web.

Como fazer automatizar Serviço de Aplicativo aplicativos Web usando o PowerShell?

Você pode usar cmdlets do PowerShell para gerenciar e manter Serviço de Aplicativo aplicativos Web. Em nossa postagem no blog Automatizar aplicativos Web hospedados em Serviço de Aplicativo do Azure usando o PowerShell, descrevemos como usar cmdlets do PowerShell baseados em Resource Manager Azure para automatizar tarefas comuns. A postagem no blog também tem 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 Serviço de Aplicativo, consulte Az.Websites.

Como fazer exibir os logs de eventos do meu aplicativo Web?

Para exibir os logs de eventos do aplicativo Web:

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

Como fazer 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 do Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Selecione o menu Processar Explorer.
  3. Clique com o botão direito do mouse no processo w3wp.exe ou no processo do WebJob.
  4. Selecione Baixar Despejo>de Memória Despejo Completo.

Como fazer exibir informações em nível de processo para meu aplicativo Web?

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

  • No portal do Azure:
    1. Abra o Explorer de Processo para o aplicativo Web.
    2. Para ver os detalhes, selecione o processo dew3wp.exe .
  • No console do Kudu:
    1. Entre no site do Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
    2. Selecione o menu Processar Explorer.
    3. Para o processo dew3wp.exe , selecione Propriedades.

Quando naveguei até meu aplicativo, vejo "Erro 403 – Este aplicativo Web é interrompido". Como fazer resolve 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 ser aplicado a um plano de serviço de escala gratuita ou compartilhada.

Para ver o que está causando o erro e resolve o problema, siga as etapas em Aplicativos Web: "Erro 403 – Este aplicativo Web está interrompido".

Onde posso saber mais sobre cotas e limites para vários planos de Serviço de Aplicativo?

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

Como fazer diminuir o tempo de resposta da 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 após o descarregamento do aplicativo Web é maior, para permitir que o aplicativo Web carregue e comece a atender respostas. Nos planos de serviço Básico e Standard, você pode ativar a configuração Always On para manter o aplicativo sempre carregado. Isso elimina tempos de carga mais longos depois que o aplicativo está ocioso. Para alterar a configuração de Always On:

  1. No portal do Azure, acesse seu aplicativo Web.
  2. Selecionar Configuração
  3. Selecione Configurações gerais.
  4. Para Always On, selecione Ativado.

Como fazer 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, acesse seu aplicativo Web.

  2. Selecione Todos os Logs de Diagnóstico de Configurações>.

  3. Para rastreamento de solicitação com falha, selecione Ativado.

  4. Selecione Salvar.

  5. Na folha do aplicativo Web, selecione Ferramentas.

  6. Selecione Visual Studio Online.

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

  8. Selecione Ir.

  9. Selecione Web.config.

  10. No 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 estiver levando 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, acesse seu site.

  13. Selecione Ferramentas>Kudu>Go.

  14. No menu, selecione DepurarCMD do Console>.

  15. Selecione a pasta LogFiles e 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 reciclar devido ao limite de 'Memória percentual'". Como fazer resolver esse problema?

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

Considere alternar para processos de 64 bits para que você possa aproveitar a memória adicional disponível em sua função de Web Worker. Essa ação dispara uma reinicialização de aplicativo Web, portanto, agende de acordo.

Observe também que um ambiente de 64 bits requer um plano de serviço Básico ou Standard. Planos gratuitos e compartilhados sempre são executados em um ambiente de 32 bits.

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

Por que meu tempo limite de solicitação após 230 segundos?

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

O WebJobs foi projetado para processamento em segundo plano. Você pode fazer o máximo de processamento em segundo plano que quiser em um WebJob. Para obter mais informações sobre WebJobs, consulte Executar tarefas em segundo plano com WebJobs.

ASP.NET Core aplicativos hospedados em Serviço de Aplicativo às vezes param de responder. Como fazer corrigir esse problema?

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

Esse problema é corrigido na versão 1.0.2 do Kestrel. Essa versão está incluída no ASP.NET Core atualização 1.0.3. Para resolve esse problema, atualize as dependências do aplicativo para usar o Kestrel 1.0.2. Como alternativa, você pode usar uma das duas soluções alternativas descritas na postagem do blog ASP.NET Core 1,0 problemas de perf lentos em Serviço de Aplicativo aplicativos Web.

Não consigo encontrar meus arquivos de log na estrutura de arquivos do meu aplicativo Web. Como posso encontrá-los?

Se você usar o recurso Cache Local de Serviço de Aplicativo, a estrutura de pastas das pastas LogFiles e Dados para sua instância Serviço de Aplicativo será afetada. Quando o Cache Local é usado, as subpastas são criadas nas pastas LogFiles e Dados de armazenamento. As subpastas usam o padrão de nomenclatura "identificador exclusivo" + carimbo de hora. Cada subpasta corresponde a uma instância de VM na qual o aplicativo Web está em execução ou foi executado.

Para determinar se você está usando o Cache Local, marcar a guia configurações do aplicativo 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 fazer resolve esse erro?

Normalmente, esse erro ocorre se as conexões TCP de saída na instância da VM estiverem esgotadas. Em Serviço de Aplicativo, os limites são impostos para o número máximo de conexões de saída que podem ser feitas para cada instância de VM. Para obter mais informações, confira Limites numéricos entre VMs.

Esse erro também poderá 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, confira a postagem no blog sobre conexões de saída com sites do Azure.

Como fazer usar o Visual Studio para depurar remotamente meu aplicativo Web Serviço de Aplicativo?

Para obter um passo a passo detalhado que mostra como depurar seu aplicativo Web usando o Visual Studio, consulte Depuração remota de seu aplicativo Web 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.