Como identificar a causa do uso de 100% da CPU no Serviço de Aplicativo do Azure?

12

Eu tenho cinco aplicativos em um Plano de Serviço de Aplicativo do Azure, todas as cópias diferentes do mesmo aplicativo para clientes diferentes. É um aplicativo ASP.NET MVC com um banco de dados SQL.

Hoje pela manhã, acordei em sites lentos e sem resposta, às vezes resultando em um erro 503. Ao verificar as métricas de CPU / Memória para o Plano de Serviço de Aplicativo, descobri que a CPU estava atrelada a 100%:

CPU a 100%

E o gráfico do tempo de CPU dos sites individuais mostra todos eles disparando ao mesmo tempo, embora alguns piores que outros:

Uso da CPU de sites individuais

Tentei resolver o problema realizando uma reinicialização avançada de aplicativos, mas o blade não carregava - presumo que estava tentando obter informações do servidor que não conseguiam responder.

No final, tentei parar cada um dos sites um a um, o que levou a CPU a zero e, em seguida, iniciá-los novamente, o que parecia ter resolvido o problema, mas agora alguns deles estão começando a subir novamente.

Ocorreu um problema semelhante há algumas semanas e presumi que estava crescendo muito para o meu App Plan, então atualizei de S1 para S2 e estava tudo bem até hoje.

Estou perplexo quanto a como descobrir qual é a causa desse comportamento de fome de CPU. Alguém pode me indicar a direção certa de como posso começar a diagnosticar isso?

littlecharva
fonte
isso parece acontecer um pouco nos planos de serviço de aplicativos do Azure, você entrou em contato com a MS? - a menos que você tenha feito alterações, eu os informarei de que há um problema com a plataforma.
Sum1sAdmin
Eu não tenho um plano de suporte com eles, então não pense que há alguma maneira de informá-los. Isso é um pouco preocupante se eu tiver problemas aleatórios de 100% da CPU - talvez precise procurar outro fornecedor. Ter duas instâncias ajudaria você acha?
Littlecharva 4/16
Eu usaria fóruns abertos como o technet - Se for crítico, você poderá escalá-lo, mas eu não pagaria mais por algo que eles precisam corrigir, se for esse o caso.
Sum1sAdmin

Respostas:

6

Tivemos esse problema algumas vezes e, a cada vez, ele era executado como GC (coleta de lixo). É difícil provar e diagnosticar, mas o que acabo fazendo é usar o site kudo (scm), clicando em tools => support (que leva você ao site de suporte de aplicativos).

A partir daqui, você escolhe seu diretório (caso você tenha vários) e o site, clique em Analisar => Métricas e, em seguida, no botão Diagnosticar ( OBSERVAÇÃO isso já foi alterado para que essas etapas possam ser alteradas a qualquer momento) e depois em Analisar => Dianotics, você acabará recebendo um relatório de despejo de memória => "Status da análise". Este deve ser um arquivo mht (que você pode abrir no odioso navegador IE ou Edge) e, em seguida, procure a chave "gc".

você encontrará alguns quadros de pilha de chamadas interessantes com referências a coisas como "GCFrame" ou, mais interessante, chamadas para "System.Threading.WaitHandle.WaitMultiple" se você receber muitos desses, seu sistema pode estar tendo problemas com a coleta de lixo .

Como resolver isso ... esse é um tópico abordado em muitos outros tópicos porque é como perguntar "como eu vivo em um mundo com o IE 6 ainda em uso?" ...

cdmdotnet
fonte
1
Isso mudou. É agora localizado no Serviço App (não local SCM, site regular Azure) a "diagnosticar e resolver problemas-> Diagnostic Ferramentas-> Despejo de memória Collect"
Josh Noe
3

Sua melhor aposta seria instalar o New Relic ou o Application Insights para este aplicativo em particular. Ele pode ser facilmente instalado através do Serviço de Aplicativo -> Ferramentas -> Monitoramento de Desempenho. Isso fornecerá uma visão detalhada do que está acontecendo no servidor e no cliente.

Monitoramento de aplicativos

Artigo: Monitorar o desempenho do aplicativo Web do Azure

Bruno Faria
fonte