2008-08-19 20 views
13

Tengo una instalación de instancia de tomcat pero la conexión de base de datos que he configurado en context.xml sigue muriendo después de períodos de inactividad.Java + Tomcat, ¿conexión de base de datos moribunda?

Cuando compruebo los registros me sale el siguiente error:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: El último paquete recibido correctamente desde el servidor hace was68051 segundos . El último paquete enviado correctamente al servidor fue hace 68051 segundos , que es más largo que el valor configurado en el servidor de 'wait_timeout'. Debe considerar caducar y/o probar la validez de la conexión antes de usarla en su aplicación, aumentar los valores configurados del servidor para tiempos de espera del cliente o usar la propiedad de conexión Connector/J 'autoReconnect = true' para evitar este problema.

Aquí es la configuración en context.xml:

<Resource name="dataSourceName" 
     auth="Container" 
     type="javax.sql.DataSource" 
     maxActive="100" 
     maxIdle="30" 
     maxWait="10000" 
     username="username" 
     password="********" 
     removeAbandoned = "true" 
     logAbandoned = "true" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://127.0.0.1:3306/databasename?autoReconnect=true&amp;useEncoding=true&amp;characterEncoding=UTF-8" /> 

estoy usando autoReconnect = tura como el error dice que hacer, pero la conexión mantiene morir. Nunca antes había visto esto suceder.

También he verificado que todas las conexiones a la base de datos se cierran correctamente.

Respuesta

8

Tomcat Documentation

DBCP utiliza la base de datos de Jakarta Commons-pool de conexiones. Se basa en el número de componentes de Jakarta-Commons:

* Jakarta-Commons DBCP 
* Jakarta-Commons Collections 
* Jakarta-Commons Pool 

Este atributo puede ser útil.

removeAbandonedTimeout="60" 

estoy usando la misma materia de agrupación de conexiones y estoy establecer estas propiedades para evitar que el mismo es simplemente no configura a través de Tomcat. Pero si lo primero no funciona, intente esto.

testWhileIdle=true 
timeBetweenEvictionRunsMillis=300000 
+0

Agradable. Establecí los parámetros en context.xml, y voy a dejarlo reposar durante 24 horas. Si no funciona, no aceptaré la respuesta. ¡Pero parece prometedor! ¡Gracias! –

0

No sé si la respuesta anterior hace básicamente lo mismo, pero algunos de nuestros sistemas utilizan la conexión DB aproximadamente una vez a la semana y he visto que proporcionamos una bandera -Otimeout o algo de esa ordenar a mysql para establecer el tiempo de espera de la conexión.

5

Solo para aclarar lo que realmente está causando esto. MySQL por defecto finaliza las conexiones abiertas después de 8 horas de inactividad. Sin embargo, el grupo de conexiones de la base de datos retendrá conexiones durante más tiempo.

Por lo tanto, al establecer timeBetweenEvictionRunsMillis = 300000 está indicando al grupo de conexiones que se ejecute a través de las conexiones y que desaloje y cierre los inactivos cada 5 minutos.

+0

¿Cuál es el nombre de esta propiedad? Me gustaría verificarlo dos veces. "thread_pool_idle_timeout = 60" es todo lo que veo. – mass

+0

@mass No tengo idea. Mi respuesta anterior tiene 7 años y hace mucho que no uso mucho Tomcat o Servlet Resource.Por lo que puedo decir, timeBetweenEvictionRunsMillis es una propiedad de la etiqueta Resource en context.xml y thread_pool_idle_timeout es una clave de archivo .property. –

+0

En este momento, por lo que sé, la configuración de timeBetweenEvictionRunsMillis todavía activa la barredora de conexiones para el conjunto de orígenes de datos jdbc. thread_pool_idle_timeout sin embargo era un parámetro de MySQL al que me refería. Dudo que los valores predeterminados actuales sean más cortos que 8 horas, pero gracias por responder de todos modos. Parece que la solución aceptada ha funcionado para el OP, voy a intentarlo. – mass

1

La opción removeAbandoned está en desuso a partir de DBCP 1.2 (aunque still present en la rama 1.3). Here es una explicación no oficial.

Cuestiones relacionadas