Eu suspeito que você precise fazer alguns perfis. Em um nível bruto, você precisa saber onde estão os gargalos, de modo que as diretrizes típicas de monitoramento de desempenho do Windows se aplicam. Gráfico de desempenho bruto da CPU (% de utilização,% modo de usuário versus modo de kernel, comutadores de contexto), disco (tamanho da fila,% de tempo de disco) e memória (falhas de página / seg., Tamanhos de conjunto de trabalho). Você vai querer começar a restringir a quais processos (IIS WAM, SQL Server, etc) estão causando sofrimento.
Como os outros pôsteres disseram - se são as consultas SQL que você está executando, provavelmente é um problema de otimização de banco de dados. Não subestime a possibilidade de que seus scripts, no entanto, estejam executando consultas tolas (SELECT * e filtrando os resultados no script, etc) que estão causando uma carga anômala do banco de dados.
Se você entrar em scripts individuais (ou seja, descobrir que o gargalo aponta para processos do IIS / WAM), dê uma olhada nesta pergunta sobre o Stackoverflow: link Há um trecho de código que é um temporizador básico de execução. Correndo o risco de impactar ainda mais o desempenho, mas em um esforço para obter mais visibilidade, você também pode considerar o registro dos parâmetros passados e os tempos de execução de seus scripts no banco de dados. A procura de valores discrepantes nesses dados pode ajudá-lo a encontrar condições de borda em seus scripts. Idealmente, você deseja projetar com o perfil em mente desde o início, e a adaptação pode ser difícil.