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.