SQL Server Performance

Problemas de Performance

Discussion in 'Preguntas sobre SQL Server en Español.' started by dr_k40z, May 2, 2007.

  1. dr_k40z New Member

    Que tal, soy nuevo en este foro, pero visito hace bastante tiempo la pagina (la cual creo que es excelente, no solo por la calidad de sus notas sobre performance sino tambien por la increible formacion de sus operadores).
    Les cuento mi problema a ver si alguien me puede ayudar.
    Hace ya un buen tiempo estamos teniendo muchisimos problemas de performance en el servidor de sql "principal" (por asi decirlo) del lugar en donde trabajo.
    Revise todo hasta el artazgo sin encontrar realmente alguna solucion al problema, salvo, cada determinado tiempo reiniciar el servidor.
    Luego del restart el mismo vuelve a funcionar de manera optima por aproximadamente unos 2 dias... donde luego gradualmente comienza a decaer nuevamente la performance...

    Los valores antes del restart del servidor del performance monitor me indican lo siguiente:
    (pongo los mas relativos)
    Pages/sec: un promedio de 1000 ptos con picos de 4000... (si leyeron bien)
    Procesor Time: un promedio de 97%
    Avg Disk Read queue lenght: un promedio de 5

    El servidor es un opteron de 2.2 Ghz con 4 Gb de memoria, corriendo win2003 server (sp1) y sql2000 (sp4). Esta configurado con la opcion /3Gb en el boot.ini, con lo que sql toma aproximadamente 2.7 ghz de memoria.

    Luego de reiniciar el servidor el mismo vuelve a los valores recomendados, es decir...

    Pages/sec: un promedio de 0 ptos con picos de 120...
    Procesor Time: un promedio de 40%
    Avg Disk Read queue lenght: un promedio de 2

    Aclaro que en el momento de los problemas de performance no hay corriendo procesos demasiado pesados.
    Hace unos dias largue un reindexado de todas las tablas de las db's mas usadas, pero esto no logro solucionar el problema.
    Espero que me puedan ayudar, y si necesitan algun contador mas, o saber alguna configuracion del equipo, no duden en preguntarlo...

    Salu2.- y gracias.-
  2. Luis Martin Moderator

    A mi criterio aquí tenés dos caminos.

    El primero es encontrar las consultas que tardan más tiempo y tratar de optimizarlas.
    Si esto no funciona entonces, de acuerdo a los números que me comentas, pareciera que el servidor resulta chico.

    Sería interesante que me comentes los siguientes datos:

    1) Qué trabajos de mantenimiento se ejecutan en forma rutinaria?
    2) El servidor es SQL dedicado?
    3) Cómo tienes configurado en uso de la memoria, fija, dinámica?
    4) La aplicación es a medida o es un genérico. Si es genérico, puedes comentar cuál es?

    Saludos,


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All in Love is Fair
    Stevie Wonder


    All postings are provided “AS IS” with no warranties for accuracy.



  3. dr_k40z New Member

    Que tal Luis, antes que nada aprovecho para saludarte y darte las gracias por la pronta respuesta, estuve viendo que te gusta mucho ayudar a la gente y voy a ver si ahora que soy un usuario asiduo del foro puedo darte una mano con alguna que otra consulta que te hagan =)

    ahora a lo tecnico:
    En forma rutinaria se realiza un update statistics del 10% en todas las db's y los fines de semana del 40%, se realiza un backup diario todas las noches, y se buckupea el log de transacciones de la Db mas importante una vez por hora. Tengo pensado incluir el reindex que vi por estos lados que se fija antes la fragmentacion de cada indice (excelente trabajo, de mas esta decirlo). Y por ahora creo que no me olvido de nada.

    Con respecto a tu segunda pregunta, si, el servidor es dedicado a sql, no hay corriendo ninguna otra aplicacion con la que tenga que competir (ya sea por memoria, por procesador o por lo que sea).

    El uso de la memoria del servidor se encuentra configurado en forma dinamica, con minimo de 0 y un max de 3073Mb (estos son los valores con los que lo encontre, no se si los habran modificado o no, sin embargo trate de subirle la memoria y sql utiliza siempre el mismo monto, 2.7ghz (luego de reconfigurarlo corri el comando reconfigure), tengo entendido que esto es asi y si quisiera subirlo tendria que activar /PAE pero esto es para cantidades de memoria mucho mayores como por ej: 8Gb)

    No entendi la pregunta de la aplicacion, pero creo que te estas refiriendo a que tipo de aplicaciones consultan el servidor, si es asi, te cuento que hay 2 aplicaciones que consultan constantemente las bases (en horario laboral) y ambas fueron desarrolladas por el equipo de desarrollo de la empresa...

    La verdad que estoy tratando de escapar al tema de tuning de consultas debido a que son miles de sps y optimizarlos todos me podria llevar muchiiiiiiiisimo tiempo...
    Yo tambien estuve barajando la opcion de que el servidor este quedando chico, pero lo raro es que despues del restart el mismo funciona bien, solamente tiene problemas de performance despues de funcionar un determinado tiempo... asi que es muy raro...
    (ojo, igual no descarto que el problema pueda ser que el servidor sea chico)...

    espero haberte aclarado un poco mas el escenario, y si necesitas mas datos o se te ocurre alguna cosa ni dudes en avisarme...

    nuevamente gracias y salu2.-

  4. Luis Martin Moderator

    Es muy habitual el comportamiento que tu me cuentas con respecto a reinicio del servidor. Muchas veces ocurre eso, funciona mejor luego del reboot. Puede ser por muchas razones y un poco difícil de controlar todas.

    Me preocupan los números que me muestras cuando el servidor está en régimen.

    En tu lugar, tomaría alguna de las consultas que consuman tiempo y cpu, me fijaría si es necesario agregarles índices para mejorar la performance de esa consulta y, consecuentemente, de todo el sistema.

    Dado que es una aplicación desarrollada por la misma empresa, le mostraría a los desarrolladores el resultado del análisis para ver que opinan del agregado de nuevos índices.

    Es por esto que te consultaba sobre la aplicación. Cuando no es desarrollada por la propia empresa, es decir es comprada a alguna proveedora genérica de software, no hay tiempo para este tipo de consultas y lo que yo hago es directamente optimizarlas sin tocar el código. Agregar índices no es modificar el código, es modificar la estructura de los datos.

    Justamente tu caso forma parte del trabajo del DBA.
    Adjuntáles documentación como: plan de ejecución, lecturas ahead lógicas y físicas, consumo de CPU. Todo para esa sola consulta.
    Además de tus recomendaciones de índices.

    La misma idea la puedes aplicar si tienes un servidor de prueba. Con esto quiero decir: Pruebas la consulta y tomas los datos, la optimizas, vuelve a tomar los datos y si la mejora es considerable, hablar con los desarrolladores sobre el problema.

    Por último, como paliativo parcial, te recomiendo un update statistics full de las tablas más críticas 3 veces por semama, una update statistitcs full en el fin de semamana e implementar el artículo de Tom Pullen para el defrag automático 2 veces por semana (una en el fin de semana).

    El defrag de Tom Pullen funciona si tienes SQL en inglés. Si está en castellano, avísame ya que yo lo tengo modificado para que funcione también en ese caso.

    Saludos,

    Luis Martin
    Moderator
    SQL-Server-Performance.com

    All in Love is Fair
    Stevie Wonder


    All postings are provided “AS IS” with no warranties for accuracy.



Share This Page