Hola amigos, en la empresa donde trabajo se compró hace años una aplicación de seguros, esta usa dao, ado, conexiónes a sql server a traves tablas vinculada en access, el asunto es que los desarrolladores la han estado manteniendo por años, ahora que la base de datos tiene 10gb, el desempeño ha ido disminuyendo, me he dado cuenta que aún después de que los usuarios cierran sus aplicaciones quedan conexiones activas, abiertas, esperando comandos, estas son muchas, ahora como puedo yo saber a través de profiler de sql server 2005 que conexiones son, que parte del código dejo abierta esa conexion, no se si me explique.

Muchas gracias.
Like it on Facebook, +1 on Google, Tweet it or share this topic on other bookmarking websites.
  • Re: como saber conexiones abiertas por aplicaciones

    by » 15 years ago


    Hola, lo que puedes ver en el profiler de SQL Server 2005 es la actividad en la base de datos, por lo que si tienes conexiones que se quedan abiertas no vas a poder ver actividad en el profiler de esas conexiones. Lo que puedes hacer en primera instancia es revisar el codigo y revisar que estas conexiones se esten cerrando.

    Si no puedes modificar el codigo, podrias crear unjob que mate las conexiones que no han echo nada por ejemplo desde 30 minutos atras.

    Ahora comentas que se ha echo mas lento el sistema, no creo que afecte mucho el echo de que las conexiones se queden en la base de datos. Más bien yo creo se debe a falta de mantenimiento de tu base de datos.

    Que tipo de mantenimiento llevas?

    Saludos

  • Re: como saber conexiones abiertas por aplicaciones

    by » 15 years ago


    Estoy haciendo un plan de mantenimiento cada domingo revisando la integridad de la base de datos, reduccion de la misma, reconstruccion de indices, generacion de estadisticas, etc.

    Ahora eso que me decis que puedo hacer un job para matar procesos que ya no se estan usando, como puedo hacer eso, me puedes ayudar, algún link o algo te lo agradecere.

    Fijate que no se que esta ocurriendo pero los sistemas estan lentos y cambiamos nuestro servidor tanto de hardware como de software, ahora tenemos un ibm xseries con dos procesadores xeon de 3.2ghz con 4gb de ram, una arreglo de discos con discos, con dos tarjetas de red gigabit las cuales tengo en teaming,ahora tenemos sql server 2005, los clientes se quejan de que las aplicaciones estan lentas, no se como probar por donde anda el error, si me puedes ayudar te lo agradeceria.

  • Re: como saber conexiones abiertas por aplicaciones

    by » 15 years ago


    Hola, mira para hacer el job puedes hacer un query sobre la tabla master..sysprocesses de ahi sacas la fecha de last_batch, el last_batch te va a decir la ultima hora y fecha en que una conexion ejecuto algo.

    Ya después podrias hacer un proceso while para matar las conexiones que extraigas por el criterio que definas.

    Ahor apor lo que veo si regeneras indices y todos, por lo que no debes de tener fragmentación. Lo que te recomiendo es que abras un trace y saques los queries que tardan más y de ahi puedes ir revisando mas a detalle el problema. Posiblemente no tienes indices que hagan falta, etc.

    Vamos a hacer lo siguiente:

    1.Necesito revises como esta el CPU cuando dicen que esta lento y abras un trace donde captures lo que tarda más de 1 segundo en ejecutarse.
    2. Después que tengamos el trace, vamos a generar los planes de ejecución de tus consultas mas lentas.
    3. Analizamos los planes de ejecución y vemos si te hacen falta indices o si es posible mejorar el query.

    Si todo eso esta bien, posiblemente tengas algun cuello de botella en los discos,cpu o memora.

    Otra cosa que tipo de raid tienes configurado para datos y log?

    Cuando hagamos lo anterior pasamos a revisar el hardware. Como ves?<br><br>Post edited by: mherlindo, at: 2006/10/23 16:20

  • Re: como saber conexiones abiertas por aplicaciones

    by » 15 years ago


    Hola acgch.
    En realidad, en nuestro sitio puedes encontrar todo lo necesario para construir un plan completo de lo que nos solicitas.

    El script para matar las conexiones, donde solo tendrás que incluir el last_batch como cláusula para conocer las conexiones viejas y matarlas, lo encontrarás en:

    http://www.dbasupport.com.mx/index.php?option=com_content&amp;task=view&amp;id=20&amp;Itemid=138

    Para el mantenimiento y atención de la fragmentación, necesitarás un &quot;reporteador&quot;, este script lo encuentras en:

    http://www.dbasupport.com.mx/index.php?option=com_content&amp;task=view&amp;id=146&amp;Itemid=132

    Para ver si tienes queries muy tardados, puedes observar en sysprocesses, el IO para ver si en realidad está trabajando algún proceso que esté consumiendo recursos.

    También te recomiendo que veas el campo DURATION del trace, a que puedes filtarlo cuando el trace &gt; 1000 y esos son costosos. Uno que tenga mayor a 3000 mandará timeout en la aplicación.

    Implementa estas rápidas opciones que te damos y verás como el rendimiento de tu instancia mejorará considerablemente. Para un mejor &quot;tuning&quot; nos puedes volver a contactar.

    Saludos y que estés muy bien
    Carlos I. Contreras<br><br>Post edited by: ccontreras, at: 2006/10/23 16:20

    DBASupport Team

  • Re: como saber conexiones abiertas por aplicaciones

    by » 15 years ago


    Ok. el trace lo hago con el profiler, que eventos y que columnas voy a analizar o utilizo los eventos y columnas que viene por defecto?, cuanto tiempo voy a estar corriendo el trace?. como le digo que capture lo que tarda más que un segundo?, importante, tengo configurado &quot;Tiempo de espera de consultas remotas en 0&quot;, antes lo tenía por defecto, 600 segundos, lo cambiamos y mejoro bastante, pero ahora esta igual de lento.

    Por otro lado en el link que me pasas para matar las conexiones, como le agrego el last_batch?.

    Les agradezco la ayuda que me puedan dar, tengo muchos deseos de aprender a optimizar mi base de datos, las cuales son dos, una de ellas mide 8gb y la otra mide 5 gb.

You do not have permissions to reply to this topic.
Powered by CjForum