¿Alguno de ustedes ha experimentado lo siguiente y ha encontrado una solución?
Una gran parte del back-end de nuestro sitio web es MS SQL Server 2005. Cada semana o dos semanas el sitio comienza a funcionar más lentamente, y veo que las consultas tardan más y más en completarse en SQL. Tengo una consulta que me gusta 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
Lo cual es bastante útil ... ofrece una instantánea de todo lo que se está ejecutando en ese momento en su servidor SQL. Lo bueno es que, incluso si su CPU está vinculada al 100% por alguna razón y Activity Monitor se niega a cargar (estoy seguro de que algunos de ustedes han estado allí), esta consulta aún regresa y puede ver qué consulta está matando su base de datos.
Cuando ejecuto esto, o Activity Monitor durante los momentos en que SQL ha comenzado a disminuir, no veo ninguna consulta específica que cause el problema: TODOS se ejecutan más lentamente en todos los ámbitos. Si reinicio el servicio MS SQL, todo está bien, se acelera rápidamente, durante una semana o dos hasta que vuelva a suceder.
Nada de lo que se me ocurre ha cambiado, pero esto acaba de comenzar hace unos meses ... ¿Ideas?
--Adicional
Tenga en cuenta que cuando se produce esta ralentización de la base de datos, no importa si estamos obteniendo 100K visitas a la página por hora (hora más ocupada del día) o 10K visitas a la página por hora (tiempo lento), todas las consultas tardan más tiempo en completarse de lo normal. El servidor no está realmente bajo presión: la CPU no es alta, el uso del disco no parece estar fuera de control ... parece una fragmentación del índice o algo por el estilo, pero ese no parece ser el problema. caso.
En cuanto a pegar los resultados de la consulta que pegué anteriormente, realmente no puedo hacer eso. La consulta anterior enumera el inicio de sesión del usuario que realiza la tarea, la consulta completa, etc., y realmente no me gustaría entregar los nombres de mis bases de datos, tablas, columnas y los inicios de sesión en línea:) ... I podemos decirle que las consultas que se ejecutan en ese momento son consultas normales y estándar para nuestro sitio que se ejecutan todo el tiempo, nada fuera de lo normal.
24 de marzo
Han pasado aproximadamente dos semanas desde el último reinicio. Hice varios cambios: encontré algunas consultas en las que hacíamos un uso intensivo de las tablas temporales que eran totalmente innecesarias y nuestros desarrolladores cambiaron cómo lo hacían. Ajusté el tamaño de algunas de las bases de datos en constante crecimiento (lento pero seguro) a un tamaño inteligente para su crecimiento. Ajusté la configuración de crecimiento automático para que todo fuera más inteligente (TODOS estaban configurados con un crecimiento de 1 MB). Por último, limpié un poco MSDB. Realizamos envíos de registros y realmente no necesité mantener años y años de puntos de respaldo, he escrito algunos scripts que mantienen esto solo unos pocos meses. Seguiré actualizando este hilo, ya que es demasiado pronto para saber si el problema ya está resuelto.