我每天都会收到此错误或我的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数据库)
答案 0 :(得分:17)
我每天都会收到此错误或我的JSP页面(...)
我会推测一下,但如果每天早上都发生这种情况(即在一夜不活动之后),那么它可能与MySQL默认情况下8小时后关闭空闲连接的事实有关({{3} })。
如果是这种情况,请:
使用数据源配置中的validationQuery
配置tomcat以测试借用连接:
<parameter>
<name>validationQuery</name>
<value>select 1</value>
</parameter>
通过wait_timeout
增加MySQL的my.cnf/my.ini
,或者通过连接命令行SQL客户端并输入SET GLOBAL wait_timeout=86400
或其他合适的秒数。
我不知道第二个选项的所有后果,并没有真正推荐它,至少没有得到MySQL专家的更多反馈。
答案 1 :(得分:1)
看起来你(部分)松散了与数据库的连接。 MySQL尝试发送一些内容,但连接丢失了。
另一位报告类似问题的mysql / tomcat用户被建议使用连接池,如c3p0。用户回复说他想首先使用Mysql / tomcat连接池,如mysqls reference manual中所述。