Connection reset by peer: socket write error错误分析及解决

Connection reset by peer: socket write error错误分析:

常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop

通常原因为:远程主机上对等方应用程序突然停止运行,或远程主机重新启动,或远程主机在远程方套接字上使用了“强制”关闭 (参见setsockopt(SO_LINGER))。另外,在一个或多个操作正在进行时,如果连接因“keep-alive”活动检测到一个失败而中 断,也可能导致此错误。此时,正在进行的操作以错误码WSAENETRESET失败返回,后续操作将失败返回错误码WSAECONNRESET。
但是如果频繁出现,就表示很 多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题。

 


参考:
http://hi.baidu.com/suofang/blog/item/5bd0fed3be6512d3a9ec9a3b.html
http://www.blogjava.net/leekiang/archive/2008/12/01/135838.html
http://hi.baidu.com/injava/blog/item/d971392e068652534ec22607.html


ClientAbortException,Connection reset by peer: socket write error

WEB系统运行时,tomcat经常抛出该异常,实在郁闷,网上查到了如下原因:

ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error的原因是由于处理http连接时,正在输出内容时,用户关闭了IE,会出现一个"ClientAbortException",属于I/O处理 中出现的一个异常,应用服务器应该会捕捉。
Connection reset by peer的原因:
经常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop

网友提供了如下解决方法:

可以修改tomcat的catalina.jar包,就在server目录下,只要替换 org.apache.catalina.connector.ClientAbortException类即可,原来类的代码很简单,太长贴不了,我就 贴里面我唯一修改注释过的那个方法: package org.apache.catalina.connector; import java.io.IOException; public final class ClientAbortException extends IOException { public ClientAbortException(String message, Throwable throwable) { this.message = null; this.throwable = null; //注释掉这行即可 //this.message = message; this.throwable = throwable; } } 我就注释掉了“//this.message = message;”这一行,就是把任何扔进来的错误信息都忽略,就可以防止tomcat这个让人讨厌的报错动作了。

参考:http://plplum.blog.163.com/blog/static/31032400200941491424120/

 

Connection reset by peer , socket write error
Causes and solutions

This exception occurs when a client made a request, and before receiving the full response, either of the following happened:

client’s browser has been closed.
client’s connection has been disconnected.
client presses the stop button.
This exception is normally harmless. It does not seem possible to trap this exception with J2SE.

参考:http://bbs.xml.org.cn/blog/more.asp?name=lisawater&id=8841&page=1

 

1,一般是有些客户端已关闭,一些线程因为延迟等原因觉察不到此连接已结束,继续等到到出错

2,客户端那里不停刷或一个访问/刷新没完成前再刷,要让这个无用的线程死掉

3,这个问题一般是客户端在连接还没有完全建立的时候就取消连接,比如用户按了浏览器上面的“停止”按钮,一般来说没有什么问题。但是如果频繁出现,就表示很多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题。

4, 这个问题一般是客户端在连接还没有完全建立的时候就取消连接,比如用户按了浏览器上面的“停止”按钮,一般来说没有什么问题。但是如果频繁出现,就表示很多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题  

5,可能你的网络连接存在一些问题,你的数据传输的时候,可能由于时间等待的太久,但是server段设置的连接检验时间限制一定,那么就可能出现这种情况的!

6,不过更常见的原因是:
1:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
2:客户关掉了浏览器,而服务器还在给客户端发送数据;
3:浏览器端按了Stop;
4:服务器给客户端响应结果给防火墙拦截了。

7,我又查了一些资料,原因如下:
    非程序问题,一般是由于与客户端连接中断所致,没有太有效的办法解决。但是可以通过系统调优等手段提高系统吞吐量,减少部分因延迟而中断的连接。

    一般免费的Web Server,如Tomcat对长期积累的IO错误解决不完善,会导致迟缓,甚至挡掉。所以,如果你的网站(或系统)访问量较大或至少又一段时间集中访问量大,一定要留意这个问题,因为它可能会使你的系统停滞。

    建议:1、提高系统性能 2、有条件的话换用商业WebServer如weblogic