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

5

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.

Esta manhã, acordei com sites lentos e não responsivos, às vezes resultando em um erro 503. Ao verificar as métricas de CPU / memória para o Plano de Serviço do Aplicativo, descobri que a CPU estava vinculada a 100%:

EográficodotempodeCPUdossitesindividuaismostratodoselessaindoaomesmotempo,emboraalgunssejampioresdoqueoutros:

Eu tentei resolver o problema fazendo um Reinicialização de aplicativo avançado, mas a lâmina não carregaria - presumo que esteja tentando obter informações do servidor que não puderam responder.

No final, tentei parar cada um dos sites, um por um, o que trouxe a CPU de volta a zero e, em seguida, inicializou-os novamente, o que parecia ter resolvido o problema, mas agora alguns deles estão começando a subir backup.

Eu experimentei um problema parecido algumas semanas atrás e presumi que estava ficando grande demais para o meu plano de aplicativos, então fiz o upgrade de S1 para S2 e estava tudo bem até hoje.

Eu estou com uma perda total de como descobrir qual é a causa desse comportamento faminto de CPU. Alguém pode me apontar na direção certa de como eu posso começar a diagnosticar isso?

    
por littlecharva 04.05.2016 / 10:53

2 respostas

4

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

A partir daqui você escolhe seu diretório (caso você tenha vários) e site, clique em Analisar = > Métricas, em seguida, o botão Diagnosticar ( OBSERVAÇÃO isso já foi alterado para que essas etapas possam ser alteradas a qualquer momento) e, em seguida, voltar em Analisar = > Dianotics, você acabará por receber um Memory Dump = > Relatório "status de análise". Este deve ser um arquivo mht (que você pode abrir no navegador odioso IE ou Edge), então procure pela 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 obtiver muitos deles, seu sistema pode estar tendo problemas com 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?" ...

    
por 30.08.2016 / 02:57
1

Sua melhor aposta seria instalar o New Relic ou o Application Insights para este aplicativo específico. Pode ser facilmente instalado através do Serviço de Aplicativo - > Ferramentas - > Monitoramento de Desempenho. Isso lhe dará uma visão detalhada do que está acontecendo no servidor e no lado do cliente.

Artigo: Monitorar o desempenho do aplicativo da Web do Azure

    
por 04.05.2016 / 14:32