none
time out RRS feed

  • Pregunta

  • Tengo una operacion de mas de 100 personas conectadas con ado.net

    como eso de medio dia los clientes van alentando hasta que manda un time out

    reinicio el servicio de sql server y se restablece todo

    el servidor no presenta consumo de cpu o de memoria

    las demas aplicaciones en la red funcionan sin problemas

     

    sábado, 19 de febrero de 2011 8:03

Respuestas

  • Hola.

    Si no hay un gran consumo por carga, lo normal es que el problema sea de bloqueos. Para detectarlos, hay muchas formas, esta que propone Miguel en su blog es simple de implementar y de utilizar:

    http://portalsql.com/index.php/2010/01/descubrir-bloqueos-en-sql-server/

    Otra cosa más compleja será erradicarlos, porque habrá que tocar la aplicación. Pero empecemos por detectar el problema y luego ya veremos cómo arreglarlo.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    sábado, 19 de febrero de 2011 8:45
    Moderador
  • Hola.

     El número máximo de conexiones que por defecto tiene configuradas .Net son 100, algo que en condiciones normales no es necesario parametrizar. Se puede aumentar este valor.

      Por otro lado en el caso de que no existan conexiones no liberadas se podría aumentar el tamaño del pool de conexiones mediante la adición del parámetro Max Pool Size en el Connection String de la Aplicación.  El siguiente enlace comenta varias formas de mitigar este problema http://blogs.msdn.com/b/tolong/archive/2006/11/21/max-pool-size-was-reached.aspx.

     


    Norman M. Pardell ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008
    sábado, 19 de febrero de 2011 14:32
  •  Hola, no se por que ahora comentas que puedes tener problemas con la tarjeta de red...

     Pero si así es, aqui te dejo unos consejos, como primer paso, para que descartes, problemas de red:

    Revisa o actualiza los drivers de red. Despues revisa la configuración de TCP Chimney ya que en algunos casos la instalación de un nuevo driver modifica los parámetros. Puedes utilizar el siguiente enlace web para realizar esta configuración:
     
    Te salen errores de este tipo: "General Network error," "Communication link failure," or "A transport-level error":

     El enlace es este, nos dice para un windows 2003 lo que tienes que hacer:  http://support.microsoft.com/kb/942861

     Por otro lado, comprueba que el servicio de Antivirus se encuentra configurado excluyendo los directorios de datos de SQL Server.


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    lunes, 21 de febrero de 2011 20:51
  •  Hola, Guillermo. He recordado un sintoma similar que sufrí no hace mucho tiempo.

     Asegúrate de que no tengas este error: async-network-io

     De tenerlo te puede aparece en el errorlog. Los síntomas son que el Servidor deja de admitir nuevas conexiones, y no es capaz de ejecutar mas consultas.... solo podemos reiniciar el servicio de SQL Server, para que todo vuelva a la normalidad…

     Mira en que dedica mas tiempo el servidor con la selec:

    SELECT TOP 10
     [Wait type] = wait_type,
     [Wait time (s)] = wait_time_ms / 1000,
     [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0
                   / SUM(wait_time_ms) OVER())
    FROM sys.dm_os_wait_stats
    WHERE wait_type NOT LIKE '%SLEEP%'
    ORDER BY wait_time_ms DESC;

     Nos cantará en primer lugar "async-network-io"

     async-network-io: a menudo es causado por el cliente no por el servidor. Se dá, cuando el servidor devuelve mas rápido los datos, que el cliente admite, de forma que el servidor tiene que hacer una pausa a la espera (de poder mandar mas datos) para seguir enviando resultados. La latencia de este estado, es el que puede ocasionar los síntomas que comentas.  La solución es revisar el cliente. O asegurarte que no tienes problemas de red.


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    lunes, 21 de febrero de 2011 23:00

Todas las respuestas

  • Hola.

    Si no hay un gran consumo por carga, lo normal es que el problema sea de bloqueos. Para detectarlos, hay muchas formas, esta que propone Miguel en su blog es simple de implementar y de utilizar:

    http://portalsql.com/index.php/2010/01/descubrir-bloqueos-en-sql-server/

    Otra cosa más compleja será erradicarlos, porque habrá que tocar la aplicación. Pero empecemos por detectar el problema y luego ya veremos cómo arreglarlo.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    sábado, 19 de febrero de 2011 8:45
    Moderador
  • Hola.

     El número máximo de conexiones que por defecto tiene configuradas .Net son 100, algo que en condiciones normales no es necesario parametrizar. Se puede aumentar este valor.

      Por otro lado en el caso de que no existan conexiones no liberadas se podría aumentar el tamaño del pool de conexiones mediante la adición del parámetro Max Pool Size en el Connection String de la Aplicación.  El siguiente enlace comenta varias formas de mitigar este problema http://blogs.msdn.com/b/tolong/archive/2006/11/21/max-pool-size-was-reached.aspx.

     


    Norman M. Pardell ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008
    sábado, 19 de febrero de 2011 14:32
  •  Algunas soluciones que se pueden tomar para resolver el problema:

     Lo primero es Revisar la aplicación para asegurarse de que todas las conexiones de base de datos se cierran cuando ya no son necesarias. ASP.NET se supone que tiene "reconector" que recupera los recursos/conexiones no utilizadas. Sin embargo, en un sitio ocupado, es probable que la agrupación de conexiones se quedará sin conexiones antes de  "recoconectar" los recursos/conexiones no utilizadas. Examinar el código en busca de posibles conexiones no cerradas o bien realizar algún mecanismo tipo try{}catch(){}finally en donde se liberen los recursos que se hayan dejado de utilizar.


     Lo segundo que se puede aumentar, es el tamaño del grupo de conexión en la cadena de conexión. Por ejemplo, puede agregar "Max Pool Size = 100" de la cadena de conexión para aumentar el tamaño del grupo a 100 o incluso superior.


    Norman M. Pardell ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008
    sábado, 19 de febrero de 2011 15:15
  • Gracias A todos

    La aplicacion es cliente servidor esta en win form cada pc utiliza una conexion pero todas se coenctan con el ismo usuario

    esto tiene algo que ver con las 100 conexiones de ado.net?

    Estoy en este momento terminando de hacerle mantenimiento a la base de datos el log de transacciones media 10 gigas ESTO PUEDE SER LA CAUSA?

     

    lunes, 21 de febrero de 2011 6:16
  • le di mantenimiento al archivo de transacciones (log) si no me funciona procedere a seguir tus instrucciones

    saludos

     

    lunes, 21 de febrero de 2011 6:23
  • El problema del time out es con un conexion ya existente activa no es para las nuevas conexiones

    esta aplicacion esta en un callcenter el tema es que se va degrdando el servicio poco a poco reinicio el servicio con los mismos clientes y se rstalbece todo ¡

     

    lunes, 21 de febrero de 2011 6:29
  •  Hola.

     No tiene nada que ver el mantenimiento de los archivos de transacciones (log), con el problema de Time-out. No se solucionaran los Time-out, porque hagas backup del log, o reduzcas los mismos…


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    lunes, 21 de febrero de 2011 7:52
  • es correcto nada que ver con el log ya cheque los blockeos y todo esta bien

    solo me queda cambiar el server alo mejor es algo de la tarjeta de red

     

    lunes, 21 de febrero de 2011 19:08
  • Hola.

    Es evidente que si tienes cortes de red, lo demás carece de sentido, pero eso lo puedes verificar fácilmente con un ping continuo. Y puedes verificar problemas de hardware también con el Event Viewer. ¿Encuentras alguna información ahí que pueda dar alguna pista del problema? ¿Algún mensaje en el log de errores de SQL Server?

    Sigo viendo como opción más factible que sean bloqueos (ya sé que has comentado que lo has comprobado).


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    lunes, 21 de febrero de 2011 20:25
    Moderador
  •  Hola, no se por que ahora comentas que puedes tener problemas con la tarjeta de red...

     Pero si así es, aqui te dejo unos consejos, como primer paso, para que descartes, problemas de red:

    Revisa o actualiza los drivers de red. Despues revisa la configuración de TCP Chimney ya que en algunos casos la instalación de un nuevo driver modifica los parámetros. Puedes utilizar el siguiente enlace web para realizar esta configuración:
     
    Te salen errores de este tipo: "General Network error," "Communication link failure," or "A transport-level error":

     El enlace es este, nos dice para un windows 2003 lo que tienes que hacer:  http://support.microsoft.com/kb/942861

     Por otro lado, comprueba que el servicio de Antivirus se encuentra configurado excluyendo los directorios de datos de SQL Server.


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    lunes, 21 de febrero de 2011 20:51
  • Comento lo de la tarjeta porue ya agote todo lo que esta en mis manos ahora me voy por lo que no es tan logico

    pero antes de eso voy   a quitar el antivirus alo me jor es eso

    saludos

    Muchs Gracias Norman

    lunes, 21 de febrero de 2011 22:09
  • el pin lo he puesto y no tieme perdidas

    los boqueos aparecen en milesimas de segundo aparecen y desaparecen .

    Hoy nuevamente tuve que resetear el servicio

    saludos

    lunes, 21 de febrero de 2011 22:15
  • Hola.

    Entiendo que estás hablando de los bloqueos justo cuando te reportan que el servidor ya no está respondiendo, ¿no?

    Ojo con quitar el antivirus, no sea que por tratar de solventar un problema de rendimiento, acabes teniendo un grave problema de seguridad. Lo que sí debes hacer es configurar el antivirus para que no chequee los ficheros de SQL Server.

    Otra cosa que deberías hacer es poner una traza de profiler. Todo ello es con el fin de capturar cuanta más información mejor, pero todo en torno al momento del problema.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    lunes, 21 de febrero de 2011 22:22
    Moderador
  • no los bloqueos estan siempre son intermitentes en todo el dia

    lo del antivirus es solo por un dia

    lo raro es que se alentan todos y el servidor esta bien cpu al 4 % memoria al 40%

     

    lunes, 21 de febrero de 2011 22:28
  • Hola.

    Es por eso que creo que son bloqueos. Si fuera algún otro cuello de botella tendrías más alta la CPU.

    Si no miras en el momento del problema (es decir, cuando todo marcha), no podrás diagnosticar adecuadamente el problema. Que haya bloqueos de corta duración es lo más normal. Que haya muchos bloqueos (hasta hacerse necesario el reinicio, que es el último recurso) es lo que hay que determinar, pero para ello hay que estudiar los momentos de crisis.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    lunes, 21 de febrero de 2011 22:44
    Moderador
  •  Hola, Guillermo. He recordado un sintoma similar que sufrí no hace mucho tiempo.

     Asegúrate de que no tengas este error: async-network-io

     De tenerlo te puede aparece en el errorlog. Los síntomas son que el Servidor deja de admitir nuevas conexiones, y no es capaz de ejecutar mas consultas.... solo podemos reiniciar el servicio de SQL Server, para que todo vuelva a la normalidad…

     Mira en que dedica mas tiempo el servidor con la selec:

    SELECT TOP 10
     [Wait type] = wait_type,
     [Wait time (s)] = wait_time_ms / 1000,
     [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0
                   / SUM(wait_time_ms) OVER())
    FROM sys.dm_os_wait_stats
    WHERE wait_type NOT LIKE '%SLEEP%'
    ORDER BY wait_time_ms DESC;

     Nos cantará en primer lugar "async-network-io"

     async-network-io: a menudo es causado por el cliente no por el servidor. Se dá, cuando el servidor devuelve mas rápido los datos, que el cliente admite, de forma que el servidor tiene que hacer una pausa a la espera (de poder mandar mas datos) para seguir enviando resultados. La latencia de este estado, es el que puede ocasionar los síntomas que comentas.  La solución es revisar el cliente. O asegurarte que no tienes problemas de red.


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    lunes, 21 de febrero de 2011 23:00
  • Todo los dias en los primeros minutos de la crisis checo todo los bolqueos no son mas ni menos casi la misma tendencia

    lo que me he dado cuenta que esto pasa cuando tengo la mayor parte del trafico pero repito el cpu y la memoria no suben

    en conexiones en la hora de la crisisi tengo 145 conexiones activas promedio

    saludos

    Gracias

    lunes, 21 de febrero de 2011 23:01
  •  Guillermo, mira mi último comentario.


     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    lunes, 21 de febrero de 2011 23:04
  • y interesante Normannp

    esto lo realizo en el momento de la crisis ?

    mañana lo ejecuto antes y en el momento de la crisis

    saludos muchas Gracias

    lunes, 21 de febrero de 2011 23:13
  • ok, ejecutalo un poco antes y en el momento de la crisis.
     Norman M. Pardell 

    ||Microsoft Certified IT Professional|| Database Administrator. Database Developer. SQL Server 2008

    lunes, 21 de febrero de 2011 23:16
  • Al parecer se soluciono el problema

    todo indica que fue el antivirus el que me causo todo esto

    les confirmo mañana y le confirmo qu emarca de antivirus estava usando

    saludos y muchas gracia a todos ¡

     

    martes, 22 de febrero de 2011 18:26