Error de TinyTds: el tiempo de espera de la conexión de Adaptive Server

Estamos ejecutando una aplicación ruby ​​on rails sobre Rails 3.2.12 (ruby 1.9.3) con la gem tinyTDS actual 0.6.2.

Usamos MS SQL 2012 o 2014 y enfrentamos más de lo habitual el siguiente mensaje de error:

TinyTds::Error: Adaptive Server connection timed out: EXEC sp_executesql [...] 

La base de datos AUTOCLOSE está desactivada. Los tiempos de espera de Socket TCP son el sistema predeterminado de Windows.

El servidor de aplicaciones está en la máquina # 1 (servidor de Windows), el servidor SQL está en la máquina # 2 (servidor de Windows).

Cuando verifico las conexiones (netstat) tengo como 250 conexiones abiertas para unos 20-30 usuarios. Ejecuto perform.exe para ver el tiempo de inactividad en el servidor SQL para los discos de datos y registro.

database.yml tiene pool:32 conexiones pool:32 y reconnect:true .

A mí me parece que esa pequeña conexión perdida de TDS y cualquier excepción impide que se vuelva a conectar.

La pregunta es, ¿cómo puedo depurar el problema para averiguar cuál es el problema?

ACTUALIZAR

Mi error, el mensaje de error original pertenece a tinytDS 0.5.x. Desde que actualicé a la última versión, recibo el siguiente error además o en su lugar:

 ActiveRecord::LostConnection (TinyTds::Error: DBPROCESS is dead or not enabled: BEGIN TRANSACTION): 

Primero, el tamaño de la piscina parece excesivo. ¿Estás usando una tonelada de hilos? De lo contrario, solo se utilizará una conexión por solicitud / respuesta de la aplicación. Simplemente parece que ese valor es muy alto.

En segundo lugar, ¿qué tiempo de espera de SQL? ¿Has encontrado que cierto SQL es más lento que otros? Si es así, entonces tienes dos opciones. El primero sería ajustar la base de datos utilizando prácticas estándar como índices, etc. El segundo sería boost la opción de “tiempo de espera” en su database.yml. El tiempo de espera predeterminado es 5000, que es de 5 segundos. ¿Has intentado configurarlo a 10000? Supongo que lo que pregunto es ¿cómo está seguro de que este es un tiempo de espera de “conexión” frente a un tiempo de espera de “espera”?