2010-07-22 27 views
9

me sale este error o de mi página JSP todos los días:java.net.SocketException: Tubo roto

java.net.SocketException 

MENSAJE: Tubo roto

StackTrace:

java.net.SocketException: Broken pipe 
     at java.net.SocketOutputStream.socketWrite0(Native Method) 
     at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
     at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
     at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
     at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
     at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637) 
     .... 

Después de reiniciar el gato servicio funciona bien. (Yo uso hibernación para conectarse a la base de datos MySQL)

+0

¿Cuál es la pregunta? –

+3

@Carl Supongo "¿Por qué ocurre esta excepción?" – stacker

+0

¿Puede usted por favor editar su pregunta para incluir su ''? – BalusC

Respuesta

1

Parece que (parcialmente) pierde la conexión con la base de datos. MySQL intenta enviar algo pero la conexión se pierde.

Otro usuario de mysql/tomcat que informó sobre un problema similar, se le recomendó usar un grupo de conexiones, como c3p0. El usuario respondió que quería utilizar primero la agrupación de conexiones Mysql/tomcat como se describe en mysqls reference manual.

This is original post (german language).

+1

Está usando Hibernate que por defecto ya menudo configurado para utilizar un pool de conexiones. Parece una configuración de grupo de conexiones de Hibernate incorrecta. – BalusC

17

me sale este error o de mi página JSP todos los días (...)

voy a especular un poco, pero si esto sucede cada mañana (es decir, después de una noche de inactividad), entonces podría estar relacionado con el hecho de que MySQL cierra conexiones inactivas después de 8 horas por defecto (wait_timeout).

si este es el caso, ya sea:

  • configurar Tomcat para poner a prueba las conexiones en préstamo utilizando un validationQuery en la configuración de fuente de datos:

    <parameter> 
        <name>validationQuery</name> 
        <value>select 1</value> 
    </parameter> 
    
  • aumento de wait_timeout través my.cnf/my.ini, o por MySQL conectar con un cliente de línea de comandos SQL y entrar SET GLOBAL wait_timeout=86400, o algún otro número adecuado de segundos.

No estoy al tanto de todas las consecuencias de la segunda opción y realmente no lo recomiendo, al menos no sin alcanzar más retroalimentación de los expertos de MySQL.