繁体   English   中英

java.net.SocketException:管道损坏

[英]java.net.SocketException: Broken pipe

我每天都会收到此错误或我的jsp页面:

java.net.SocketException

消息:管道破裂

堆栈跟踪:

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

重新启动tomcat服务后,它工作正常。 (我使用hibernate连接到mysql数据库)

我每天都会收到此错误或我的JSP页面(...)

我将推测一下,但如果每天早上都发生这种情况(即在一夜不活动之后),那么它可能与MySQL在8小时后默认关闭空闲连接( wait_timeout )有关。

如果是这种情况,请:

  • 配置tomcat以使用数据源配置中的validationQuery测试借用连接:

     <parameter> <name>validationQuery</name> <value>select 1</value> </parameter> 
  • 通过my.cnf/my.ini增加MySQL的wait_timeout ,或者通过连接命令行SQL客户端并输入SET GLOBAL wait_timeout=86400 ,或其他一些合适的秒数。

我不知道第二个选项的所有后果,并没有真正推荐它,至少没有得到MySQL专家的更多反馈。

看起来你(部分)松散了与数据库的连接。 MySQL尝试发送一些东西,但连接丢失了。

另一个报告类似问题的mysql / tomcat用户被建议使用连接池,如c3p0 用户回答说他想首先使用mysql / tomcat连接池,如mysqls参考手册中所述

这是原始帖子(德语)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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