2010-07-22 46 views
9

我得到這個錯誤還是我的jsp頁面每天:java.net.SocketException異常:殘破的管道

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的後它的工作正常。 (我使用休眠連接到mysql數據庫)

+0

那麼問題是什麼? – 2010-07-22 06:27:55

+3

@Carl我猜「爲什麼會發生這種異常?」 – stacker 2010-07-22 06:30:31

+0

你可以編輯你的問題來包含你的''嗎? – BalusC 2010-07-22 21:57:12

回答

1

看起來像你(部分)鬆散的連接到你的數據庫。 MySQL試圖發送一些東西,但連接丟失。

另一個報告類似問題的mysql/tomcat用戶被建議使用連接池,如c3p0。用戶回答說,他想首先使用Mysql/tomcat連接池,如mysqls reference manual中所述。

This is original post (german language)

+1

他使用的Hibernate默認情況下通常已經配置爲使用連接池。它看起來像一個不正確的Hibernate連接池配置。 – BalusC 2010-07-22 12:29:59

17

我得到這個錯誤還是我的JSP頁面每天(...)

我要猜測一下,但如果發生這種情況,每天早上(不活動經過一夜的IE)那麼它可能與MySQL在默認8小時後關閉空閒連接(wait_timeout)有關。

如果是這樣的情況下,或者:

  • 配置Tomcat以測試數據源配置使用validationQuery上借連接:

    <parameter> 
        <name>validationQuery</name> 
        <value>select 1</value> 
    </parameter> 
    
  • 增加的MySQL經由my.cnf/my.ini,或通過的wait_timeout與命令行SQL客戶端連接並輸入SET GLOBAL wait_timeout=86400或其他適當的秒數。

我不知道第二個選項的所有後果,並沒有真正推薦它,至少不是沒有從MySQL專家那裏得到更多反饋。

相關問題