Anexe o WinDbg + sos e execute !runaway
. Isso mostrará qual segmento está demorando mais tempo de CPU. Faça um !clrstack
no encadeamento para descobrir o que está fazendo.
w3wp.exe
está mostrando 99% de uso da CPU. Quais são as melhores maneiras de investigar a causa desse alto uso da CPU?
Anexe o WinDbg + sos e execute !runaway
. Isso mostrará qual segmento está demorando mais tempo de CPU. Faça um !clrstack
no encadeamento para descobrir o que está fazendo.
w3wp.exe
é o processo de trabalho do ASP.NET, portanto, se estiver usando uma alta porcentagem da CPU do servidor, é o aplicativo ASP.NET que está causando o problema. No entanto, isso não necessariamente indica que há um problema com o aplicativo ASP.NET. Pode estar atendendo a muitos pedidos com recursos limitados. A única medida real é verificar o uso da CPU em relação à quantidade de tráfego que está sendo manipulada pelo aplicativo.
Se você suspeitar que uma determinada solicitação demore demais, poderá usar o utilitário de linha de comando Logparser para analisar seus arquivos de log e descobrir qual página tem um longo tempo de execução.
c:\>logparser "select top 10 cs-uri-stem, time-taken from INSERT_YOUR_IIS_LOG_FILE_NAME.log group by cs-uri-stem order by time-taken desc" -q:on
Você também pode usar uma ferramenta para mostrar quais páginas estão em execução no momento, como IISPeek (não gratuito).
Se você quiser ir mais fundo, tente entender como usar o WinDbg. Aqui está um bom tutorial: Depuradores do Windows: Parte 1: Um tutorial do WinDbg
Eu tive esse problema intermitentemente antes. Parece aumentar para 99% após o primeiro pedido e nunca desce. Se eu matar o processo, o novo processo de trabalho geralmente se comportará corretamente. Eu nunca descobri porque isso acontece.
Estamos tendo o mesmo problema que Greg mencionou acima. Estamos apenas matando esses processos. Não observou isso no IIS6 / windows server 2003, apenas no IIS7 / windows server 2008.