简体   繁体   中英

java.net.SocketException: Broken pipe

I get this error or my jsp page every day:

java.net.SocketException

MESSAGE: Broken pipe

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)
        ....

After restarting the tomcat service it works fine. (I use hibernate to connect to the mysql database)

I get this error or my JSP page every day (...)

I'm going to speculate a bit but if this happens every morning (ie after a night of inactivity), then it might be related to the fact that MySQL closes idle connections after 8 hours by default (the wait_timeout ).

If this is the case, either:

  • configure tomcat to test connections on borrow using a validationQuery in the datasource configuration:

     <parameter> <name>validationQuery</name> <value>select 1</value> </parameter> 
  • increase MySQL's wait_timeout via my.cnf/my.ini , or by connecting with a command-line SQL client and entering SET GLOBAL wait_timeout=86400 , or some other suitable number of seconds.

I'm not aware of all the consequences of the second option and don't really recommend it, at least not without getting more feedback from MySQL experts.

Looks like you (partially) loose the connection to your database. MySQL tries to send something but the connection is lost.

Another mysql/tomcat user who reported a similiar problem, was adviced to use a connection pool, like c3p0 . The user replied that he wanted to use the Mysql/tomcat connection pooling first as described in mysqls reference manual .

This is original post (german language) .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM