W3WP.EXE usando 100% CPU - por onde começar?
ASP.NET a aplicação web que corre no IIS6 dispara periodicamente a CPU até 100%. É o W3WP que é responsável por quase todo o uso da CPU durante estes episódios. A CPU fica presa a 100% em qualquer lugar de alguns minutos a mais de uma hora.
isto está num servidor de paragem e o site só está a receber muito tráfego de testadores neste ponto.
Estamos a analisar o perfil das formigas no servidor, mas tem sido pouco esclarecedor. Onde podemos começar a descobrir o que é causando estes episódios e que código está mantendo a CPU ocupada durante todo esse tempo?9 answers
- contadores de desempenho padrão do Windows( Procure por outras actividades correlacionadas, tais como muitos pedidos de obtenção, rede excessiva ou disco I / O, etc.); pode lê-los a partir do código e do perfmon (para activar a recolha de dados se a utilização da CPU exceder um limiar, por exemplo)
- contadores de desempenho personalizados (especialmente para o tempo para pedidos fora de caixa e outras chamadas em que o tempo de execução é incerto)
- Teste de carga, utilizando ferramentas como o teste em equipa Visual Studio ou WCAT
- Se puder testar ou actualizar para o IIS 7, poderá configurar o Rastreio de pedidos falhados para gerar um traço se os pedidos demorarem mais tempo
- Usar o logparser para ver que pedidos chegaram no momento do Pico da CPU
- resenhas / passagens de código (em particular, procure por loops que não possam terminar corretamente, como se um erro acontecesse, bem como bloqueios e potenciais problemas de threading, como o uso de estática)
- CPU e perfil de memória (pode ser difícil num sistema de produção)
- Process Explorer
- Windows Resource Monitor
- registo de erros detalhado
- registo de vestígios personalizado, incluindo detalhes do tempo de execução (talvez condicional, com base no contador perf do CPU-use) Os erros acontecem quando o AppPool recicla? Se sim, pode ser uma pista.
Process Explorer é uma excelente ferramenta para resolução de problemas. Você pode tentar isso para encontrar o problema de alta CPU uso. Ele lhe dá uma visão sobre a forma como sua aplicação funciona.
Você também pode tentar Procdump para despejar o processo e analisar o que realmente aconteceu na CPU.
Pode tentar reduzi-lo com uma única página - encontramos FORMIGAS para não ajudar muito no mesmo caso - o que acabamos de fazer foi executando o site de uma página de relógio do CPU - visitas a próxima página do relógio do CPU - muito metódica e demorado, mas se você não pode encontrá-lo com algum código de rastreamento poderá ser fora da sorte -
Conseguimos usar ficheiros de Registo IIS para rastreá-lo até um conjunto de páginas suspeitas. Espero que isso ajude !Isto é um palpite na melhor das hipóteses, mas talvez a sua equipa de desenvolvimento esteja a construir e a implantar a aplicação no modo de depuração, em vez do modo de libertação. Isto causará a ocorrência de .ficheiros pdb. A implicação disso é que a sua aplicação irá usar recursos adicionais para coletar informações de Estado do sistema e depuração durante a execução do seu sistema, causando mais Utilização do processador.
Por isso, seria suficientemente simples para garantir que estão a construir e a implantar modo de libertação.-
Basta clicar no seu servidor no painel esquerdo do IIS.
- Clique em ' Trabalhador Processos na área principal. você já vê que pool de aplicação está tomando muito CPU.
- faça duplo-click nesta linha (eventualmente actualize, carregando em 'Mostrar tudo') para ver quais as páginas que consomem demasiado tempo de CPU ('tempo decorrido') coluna) neste conjunto
Se identificar uma página que leva tempo a carregar, use o painel de desenvolvimento do SharePoint para ver que componente leva tempo.