Alta utilização da CPU w3wp.exe - questão de GC?

1

Eu herdei um site que usa muito estado de sessão. Recentemente, experimentamos uma CPU alta contínua ~ 95-100% por um período prolongado de tempo.

Ao depurar usando o DebugDiag, ele mostra que havia ~ 3gb no Large Object Heap, que, acredito, é coletado no Gen 2 pelo GC e pode ser uma causa do alto cpu.

Eu tenho experiência praticamente nula na depuração de tais cenários, mas o acima exposto soa uma razão plausível para a alta CPU?

Obrigado.

    
por Darren Young 08.12.2014 / 17:34

1 resposta

1

Você pode verificar se o GC é o problema usando o Monitor de Desempenho e o contador de desempenho '.NET Memory \% Tempo no GC'. Se você tiver apenas um processo .NET no servidor, basta usar a instância _total. Caso contrário, você terá que encontrar a instância que tem um ID de processo correspondente e assistir a essa (embora esteja ciente de que o nome da instância do seu aplicativo pode ser alterado imediatamente se algum aplicativo for inicializado ou desligado).

Se os picos neste contador corresponderem aos picos de CPU, a coleta de lixo é o seu problema - você precisará procurar por vazamentos, alocar menos objetos, manter as coisas pequenas o suficiente para mantê-las fora do LOH, mantê-las por menos tempo , reutilizá-los e / ou eliminar destruidores. Cada uma dessas coisas reduzirá o tempo gasto no GC. Ironicamente, muito armazenamento em cache pode fazer seu site não responder inconsistentemente, pois os itens em cache acabam no heap 2 e solicita que o processamento seja pausado enquanto o GC varre todos os itens do heap 2. À medida que a pressão da memória aumenta, a frequência desses bloqueios aumenta até seus pedidos são completamente eliminados.

    
por 13.12.2014 / 05:49