Olá Marcos,
Pela descrição, eu tomaria cuidado para não atribuir a causa ao IIS sem evidências. Na maioria dos casos, o IIS apenas hospeda a aplicação e o gargalo acaba estando no código, em chamadas externas, no pool de conexões ou em vazamentos de memória da aplicação.
Como o problema é esporádico, minha recomendação seria:
- Quando a lentidão ocorrer, identificar qual processo w3wp.exe está consumindo memória ou CPU e associá-lo ao respectivo Application Pool (
appcmd list wp). - Coletar contadores do PerfMon para:
- Private Bytes
- Working Set
- Requests Queued
- Request Execution Time
- % Processor Time
- Request Execution Time
- Requests Queued
- Working Set
- Private Bytes
- Se a memória continuar crescendo sem retornar ao normal, capturar dumps com DebugDiag ou ProcDump durante o incidente. A Microsoft recomenda essas ferramentas para identificar leaks de memória gerenciada ou nativa em aplicações hospedadas no IIS.
Verificar se o problema desaparece temporariamente após reciclar o Application Pool. Se sim, isso costuma indicar vazamento de recursos ou degradação progressiva da aplicação, e não do IIS em si.
Uma informação que ajudaria bastante na análise: a aplicação é ASP.NET Framework, ASP.NET Core ou outra tecnologia? E o problema aparece com alto consumo de memória, CPU ou apenas aumento do tempo de resposta?
Com esses dados fica mais fácil direcionar a investigação.