2015-07-03 86 views
3

我很熟悉爲什麼在服務器端引發以下異常(客戶端從服務器斷開連接而不讀取數據)。但是,如果發生這種情況,服務器會變得非常緩慢且無響應。我正在研究可能的解決方案,以便服務器能夠適應不良行爲的客戶端。java.io.IOException:破壞管道,導致嵌入式tomcat 8應用程序

java.io.IOException: Broken pipe 
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[na:1.8.0_45] 
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.8.0_45] 
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.8.0_45] 
    at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[na:1.8.0_45] 
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[na:1.8.0_45] 
    at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:127) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:173) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.coyote.http11.InternalNioOutputBuffer.writeToSocket(InternalNioOutputBuffer.java:139) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:197) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.coyote.http11.InternalNioOutputBuffer.access$000(InternalNioOutputBuffer.java:41) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer.java:320) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:256) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.coyote.Response.doWrite(Response.java:503) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:388) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
    ... 103 common frames omitted 
Wrapped by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe 
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:393) ~[tomcat-embed-core-8.0.20.jar!/:8.0.20] 
+0

我有同樣的問題,它看起來好像服務器沒有足夠的資源,你可以監視你的應用程序通過JVM監視器或像這個工具 – kxyz

+0

@ksxyz會做。驚訝地看到,這個沒有答案...似乎重新啓動是規範 –

+0

我在生產中有類似的問題,並不知道發生了什麼事情。只有重新啓動應用程序才能解決它。 –

回答

1

我曾遇到類似的情況,每一個下載,通過控制器被扔水管壞了異常,後來我發現問題的根本原因是在Tomcat容器Spring上下文中的重複加載。這可以通過掃描日誌來檢查兩個相同控制器方法的條目。我通過移動一次加載mvc-dispatcher servlet來解決它。

相關問題