警告: Error sending end packet
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 org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:531)
at org.apache.jk.common.JkInputStream.endMessage(JkInputStream.java:121)
at org.apache.jk.core.MsgContext.action(MsgContext.java:301)
at org.apache.coyote.Response.action(Response.java:183)
at org.apache.coyote.Response.finish(Response.java:305)
at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:276)
at org.apache.catalina.connector.Response.finishResponse(Response.java:486)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:287)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
环境是Linux+tomcat,最近出现了这样的问题,之前没有遇到过。偶尔出现,自己在线上环境自测使用都没有遇到,在网上找了一下,搜集了一些资料,备用:
一位网友的解释如下:
抛出java.net.SocketException: Broken pipe的异常就是说客户端关闭了连接,可能是客户端运行的程序结束了,或者是客户强行中断了连接,原因很多,但不是我们乙方的问题,是你们甲方出的乱子。
要禁止后台打印错误,打开catalina.sh,找到 elif [ "$1" = "start" ] ; then 再往下找到 org.apache.catalina.startup.Bootstrap "$@" start 加上2>/dev/null,错误信息输出到空设备。 另一种做法就是把conf/logging.properties文件里的FINE,INFO全替换成SEVERE,只输出错误级别的信息。 |