java.net.SocketException:管道损坏
我每天都会收到此错误或我的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
)有关。
如果是这种情况,请:
-
使用数据源配置中的
validationQuery
配置tomcat以测试借用连接:validationQuery select 1 -
通过
my.cnf/my.ini
增加MySQL的wait_timeout
,或者通过连接命令行SQL客户端并输入SET GLOBAL wait_timeout=86400
,或其他一些合适的秒数。
我不知道第二个选项的所有后果,并没有真正推荐它,至少没有得到MySQL专家的更多反馈。
看起来你(部分)松散了与数据库的连接。 MySQL尝试发送一些东西,但连接丢失了。
另一个报告类似问题的mysql / tomcat用户被建议使用连接池,如c3p0 。 用户回答说他想首先使用mysql / tomcat连接池,如mysqls参考手册中所述 。
这是原始post(德语) 。
- Oracle上的Hibernate:将String属性映射到CLOB列
- 注入自动连接的依赖项失败; 嵌套exception是org.springframework.beans.factory.BeanCreationException:
- java.lang.IllegalStateException:BindingResult和bean名称’category’的普通目标对象都不能作为请求属性使用
- JPA:没有@OneToMany注释的左连接
- 通过Hibernate(不是JDBC)从blob中检索图像
- 将Hibernate实体映射为未知的DiscriminatorValue for InheritanceType.SINGLE_TABLE
- 乐观锁定的重试机制(弹簧数据+ JPA)
- UnexpectedRollbackException – 完整的场景分析
- Hibernate,id,oracle,sequence