簡體   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