2010-07-22 106 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专家那里得到更多反馈。

相关问题