IIS App Pool Alto uso da CPU apesar de não haver solicitações

10

Migrei recentemente um conjunto de servidores do Windows Server 2008 R2 / IIS 7.5 para novos servidores que executam o Windows Server 2012 / IIS 8.

Estou com algum comportamento estranho do IIS. Temos dois servidores idênticos, cada servidor está executando dois sites, cada um em seu próprio pool de aplicativos. O código para cada um dos sites é idêntico. (Literalmente ... o mesmo dll e tudo, apenas uma configuração ligeiramente diferente).

Os pools de aplicativos são definidos para reciclagem em um agendamento a cada 24 horas, mas durante esse período de 24 horas, o uso da CPU do processo de trabalho w3wp aumenta em incrementos de 12,5% (o servidor tem 8 processadores, então não acho que é uma coincidência).

Quando o uso da CPU aumentar, NÃO voltará até que o aplicativo seja reciclado. Tanto quanto eu posso dizer, o aplicativo não está fazendo nada e processando pedidos NO neste momento. Eu posso bloquear todo o tráfego para o servidor e o uso da CPU só vai ficar lá. Eu posso até mesmo reiniciar o site, e o uso da CPU permanece o mesmo. A única maneira de redefinir o uso da CPU é reciclar ou reiniciar o pool de aplicativos no qual ele é executado.

Estou certo de que esse problema não tem nada a ver com meu código, mas algum tipo de configuração do IIS ou uma alteração no IIS 8 que esteja funcionando mal com a configuração de hardware ou algo assim?

Não tenho certeza se é importante ou não, mas esses são os servidores da Rackspace Performance Cloud.

Aqui está uma captura de tela para mostrar a carga da CPU ao longo do tempo nesses servidores (setas verdes apontam para os horários em que o pool de aplicativos é reciclado. Você pode ver que cada platô é um múltiplo integral de 12,5%:

Alguémobservouessecomportamento?Euencontreiessaperguntaapartirde2009comalguémtendooquepareceseromesmoproblemacomoIIS6:

IIS w3wp usando alta cpu sem tráfego

Qualquer ajuda é muito apreciada

    
por Leland Richardson 22.07.2014 / 05:34

5 respostas

1

Tive o mesmo problema com o Sharepoint 2013 e o IIS 8 em 2012 ... Nunca nos incomodamos, mas em vez disso fizemos o downgrade para o SP2013 em 2008 R2 e tudo estava bem.

    
por 22.07.2014 / 05:39
1

Você pode tentar usar a ferramenta de diagnóstico de depuração para rastreie o que está causando o problema. Geralmente é para solucionar problemas de falhas e vazamentos de memória, mas pode ajudar a descobrir qual componente está causando o problema.

    
por 28.07.2014 / 03:15
1

Isso realmente parece com algum código preso em um loop infinito.

Uma solicitação é recebida, o IIS começa a exibi-la, algo (provavelmente um bug) aciona esse comportamento, um thread de trabalho entra em um loop infinito e coloca a CPU em 100% e fica assim até o pool de aplicativos reciclado.

Mesmo que não recebam novas solicitações, a CPU permanece em uso porque o encadeamento preso nunca termina.

Às vezes, uma nova solicitação aciona esse comportamento novamente e você obtém duas CPUs paradas (ou três, ou quatro ...).

Reciclar o pool de aplicativos, é claro, encerra todos os threads de trabalho e, assim, o problema é solucionado ... até que ocorra novamente.

    
por 30.11.2015 / 10:15
0

Você poderia anexar um profiler de CPU ao processo w3wp e dar uma olhada no que está acontecendo lá. Você deve ser capaz de ver o que consome os ciclos da CPU.

    
por 25.07.2014 / 09:10
0

Parece um loop infinito para mim. Eu já vi isso algumas vezes, apesar do IIS dizer que não há solicitações pendentes. Eu não tenho certeza de como isso pode ser, mas isso é exatamente o que você veria. A parte difícil é que o IIS não registra solicitações até que elas sejam concluídas, portanto, descobrir qual solicitação aciona esse comportamento é difícil.

    
por 13.12.2014 / 06:53