consulta pool de conexiones en tomcat y timeout de mysql

554 views
Skip to first unread message

Hugo Arregui

unread,
Mar 6, 2008, 11:59:38 AM3/6/08
to jav...@googlegroups.com
Buenas,

estoy teniendo un problema, quiesiera consultar a ver si me pueden dar una mano...

Tengo una app corriendo sobre un tomcat (5.0.28), el cual, a su vez, contiene un pool de conexiones a un mysql.

La aplicacion funciona bien hasta que, en determinado tiempo al expirar el timeout del mysql, este cierra la conexion que el tomcat mantiene abierta, provocando -en el proximo getConnection- una excepcion (com.mysql.jdbc.CommunicationsException: Communications link failure). Sin embargo si sigo ejecutando la app, el proximo getConnection, despues de la excepcion, funciona perfectamente.

Entiendo entonces, que el problema se encuentra en que el tomcat mantine como disponible una conexion al mysql q ha expirado...

como posible solucion pense en reintentar bajo esa excepcion un nuevo connect (de ultima, previo delay), pero me parecio que seguramente hay formas mejores de hacerlo.

Por otro lado hay ciertas restricciones, la app esta hecha bajo el Avaya Dialog Designer (es un IVR), y es el propio software quien genera el archivo de contexto, por lo que no puedo modificarlo libremente.

Ahora, mis preguntas entonces, son:

como solucionarian este problema?, lei en algun lado sobre la posibilidad de reiniciar el pool de conexiones, es esto viable?

Muchas Gracias

Saludos.

Hugo.


Bruno Bonanno

unread,
Mar 6, 2008, 2:27:09 PM3/6/08
to jav...@googlegroups.com
podes modificar el archivo my.ini de mysql para aumentaer el timeout, si mal no recuerdo son 8 horas, ponele un tiempo mas alto y vuala
saludos
--
ATTE
Bruno Bonanno
15-3195-0013
-
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.

Javier Rapoport

unread,
Mar 6, 2008, 6:03:10 PM3/6/08
to jav...@googlegroups.com
creo que sin necesidad de modificar el timeout de la bd, lo que podes hacer es una especie de "keep alive" que, cada tanto tiempo despues del ultimo pedido que reciba el pool (digamos... 1hs?) haga un query cualquiera para mantener viva la conexion y que el mysql no se crea que lo estan boludeando

hugo.a...@gmail.com

unread,
Mar 7, 2008, 7:33:30 AM3/7/08
to JavaSOS
Si, es una buena idea. Sin embargo, independientemente de la
desconexion por timeout, si algo le ocurriera al servidor o por alguna
razon la conexion se perdiera, estaria en la misma..

Muchas Gracias

Saludos.

Hugo.

Pablo Saavedra

unread,
Mar 7, 2008, 2:08:34 PM3/7/08
to jav...@googlegroups.com
Así lo solucionamos nosotros hace bastante tiempo. El pool de conexiones de tomcat, que está basado en DBCP, tiene una opción para meterle un query que haga eso mismo.

Saludos,
Pablo.

Patricio Keilty

unread,
Mar 7, 2008, 8:09:08 PM3/7/08
to jav...@googlegroups.com
On Fri, Mar 7, 2008 at 5:08 PM, Pablo Saavedra <pablo.a....@gmail.com> wrote:
Así lo solucionamos nosotros hace bastante tiempo. El pool de conexiones de tomcat, que está basado en DBCP, tiene una opción para meterle un query que haga eso mismo.

Exactamente es así Pablo, el pool de conexiones que usa Tomcat por default, DBCP, usa el parámetro validationQuery con este propósito: realiza una consulta para validar el estado de la conexión antes de dejarla disponible, si la consulta falla porque la conexión con el servidor ya no está activa (por el motivo que sea, timeout, rearranque del servidor, etc) establece una nueva y la deja disponible. Esta consulta de validación debe ser elegida con cuidado para no afectar significativamente la performance, como recomendación:

Database Validation Query
MySQL Select 1
MS SQL Server Select 1
Oracle select 'validationQuery' from dual

En la consola de administración de Tomcat podés setearle este parámetro al DataSource quedando algo así:

<parameter>
<name>validationQuery</name>
<value>select 1</value>
</parameter>

Para mas información http://confluence.atlassian.com/display/JIRA/Surviving+Connection+Closures.

saludos,
--p

hugo.a...@gmail.com

unread,
Mar 10, 2008, 6:47:11 AM3/10/08
to JavaSOS
Muchisimas Gracias, eso era exactamente lo que estaba buscando.

Saludos.

Hugo.

On 7 mar, 22:09, "Patricio Keilty" <patricio.kei...@gmail.com> wrote:
> On Fri, Mar 7, 2008 at 5:08 PM, Pablo Saavedra <pablo.a.saave...@gmail.com>
> Para mas informaciónhttp://confluence.atlassian.com/display/JIRA/Surviving+Connection+Clo....
>
> saludos,
> --p
Reply all
Reply to author
Forward
0 new messages