Algum de vocês já experimentou o seguinte e encontrou uma solução:
Uma grande parte do back-end do nosso site é o MS SQL Server 2005. Toda semana ou duas semanas o site começa a ficar mais lento - e vejo consultas demorando mais e mais para serem concluídas no SQL. Eu tenho uma consulta que eu gosto de usar:
USE master
select text,wait_time,blocking_session_id AS "Block",
percent_complete, * from sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 order by start_time asc
O que é bastante útil ... fornece um instantâneo de tudo o que está sendo executado naquele momento no servidor SQL. O interessante é que, mesmo que sua CPU esteja atrelada a 100% por algum motivo e o Activity Monitor esteja se recusando a carregar (tenho certeza que alguns de vocês já estiveram lá), essa consulta ainda retorna e você pode ver qual consulta está matando seu banco de dados.
Quando eu executo isso ou o Activity Monitor durante o tempo em que o SQL começou a ficar lento, não vejo nenhuma consulta específica causando o problema - elas TODAS estão sendo executadas mais lentamente. Se eu reiniciar o serviço MS SQL, tudo está bem, ele acelera - por uma semana ou duas até que aconteça novamente.
Nada em que consigo pensar mudou, mas isso começou há alguns meses atrás ... Idéias?
--Adicionado
Observe que, quando ocorre a desaceleração do banco de dados, não importa se estamos recebendo 100 mil visualizações de página por hora (hora mais movimentada do dia) ou 10 mil visualizações de página por hora (hora mais lenta), todas as consultas demoram mais para serem concluídas do que o normal. O servidor não está realmente estressado - a CPU não está alta, o uso do disco não parece estar fora de controle ... parece uma fragmentação de índice ou algo do tipo, mas esse não parece ser o caso.
Quanto a colar os resultados da consulta que colei acima, realmente não posso fazer isso. A Consulta acima lista o login do usuário que está executando a tarefa, toda a consulta, etc. etc. e eu realmente não gostaria de distribuir os nomes dos meus bancos de dados, tabelas, colunas e logins on-line:) ... podemos dizer que as consultas em execução naquele momento são normais, consultas padrão para o nosso site que são executadas o tempo todo, nada fora do normal.
- 24 de março
Já se passaram duas semanas desde a última reinicialização. Fiz várias alterações: encontrei algumas consultas em que estávamos fazendo uso pesado de tabelas temporárias que eram totalmente desnecessárias e nossos desenvolvedores mudaram a maneira como estavam fazendo isso. Ajustei o tamanho de alguns bancos de dados em constante crescimento (lenta mas seguramente) para um tamanho inteligente para o seu crescimento. Ajustei as configurações de crescimento automático para que tudo fosse mais inteligente (elas estavam TODAS configuradas para 1 MB de crescimento). Por fim, limpei um pouco o MSDB. Fazemos o envio de logs e realmente não precisamos manter anos e anos em pontos de backup, escrevi alguns scripts que mantêm isso por apenas alguns meses. Continuarei atualizando esse segmento, pois é muito cedo para saber se o problema já foi resolvido.