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


10

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

Estou tendo algum comportamento estranho no 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 ... mesmas dll e tudo, apenas configuração ligeiramente diferente).

Os pools de aplicativos estão configurados para reciclar em uma programação a cada 24 horas, mas, durante esse período de 24 horas, o uso da CPU do processo do operador w3wp aumenta em incrementos de 12,5% (o servidor possui 8 processadores, por isso acho que não). uma coincidência).

Depois que o uso da CPU aumenta, ele NÃO diminui até que o aplicativo seja reciclado. Até onde eu sei, o aplicativo não está fazendo nada e está processando pedidos de NO momento. Posso bloquear todo o tráfego do servidor e o uso da CPU permanecerá lá. Posso até 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 em que ele é executado.

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

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

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

insira a descrição da imagem aqui

Alguém já observou esse comportamento? Eu encontrei esta pergunta em 2009 com alguém com o que parece ser o mesmo problema no IIS 6:

IIS w3wp usando CPU alta sem tráfego

Qualquer ajuda é muito apreciada

Respostas:


1

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


2
homem. depois de todo o trabalho que acabei de colocar na migração, esta não é a resposta que eu esperava ...: /
Leland Richardson

1

Você pode tentar usar a ferramenta Debug Diagnostic para rastrear o que está causando o problema. Geralmente é para solucionar problemas de falhas e vazamentos de memória, mas pode ajudar a encontrar qual componente está causando o problema.


Como usar a ferramenta Debug Diagnostic programaticamente quando high CPU or RAM more 90%?
21418 Kiquenet

@Kiquenet Você pode tentar fazer um despejo de memória do processo e depois analisá-lo em outra máquina. Estou enfrentando um problema semelhante e consegui capturar um despejo em <1 min em um servidor com ~ 100% de uso da CPU
Piyush Saravagi 02/01

sim, então capture um dump em <1 min em um servidor com ~ 100% de uso da CPU programaticamente ?
Kiquenet 15/01

1

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

Uma solicitação é recebida, o IIS começa a atendê-la, algo (provavelmente um bug) desencadeia esse comportamento, um thread de trabalho entra em um loop infinito e vincula uma CPU a 100% e depois permanece assim até que o pool de aplicativos seja reciclado.

Mesmo que nenhuma solicitação nova seja recebida, a CPU permanece em uso porque o encadeamento travado nunca termina realmente.

Às vezes, uma nova solicitação aciona esse comportamento novamente e, em seguida, você recebe duas CPUs travadas (ou três ou quatro ...).

É claro que a reciclagem do pool de aplicativos encerra todos os threads de trabalho, assim o problema é resolvido ... até que ocorra novamente.


0

Você pode anexar um perfilador de CPU ao processo w3wp e ver o que está acontecendo lá. Você deve poder ver o que consome os ciclos da CPU.


como anexar um criador de perfil de CPU ao processo w3wp programaticamente quando a CPU ou RAM alta mais 90% ?
Kiquenet

0

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.