没有合适的资源?快使用搜索试试~ 我知道了~
首页java.net.SocketException: Connection reset 解决方法
java.net.SocketException: Connection reset 解决方法

最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
资源详情
资源评论
资源推荐

java.net.SocketException: Connection reset 解决方法解决方法
最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过
程中会经常报以下的错误:
“2011-12-03 18:00:32 DefaultHttpClient [INFO] I/O exception (java.net.SocketException) caught when processing request:
Connection reset by peer: socket write error
2011-12-03 18:00:32 DefaultHttpClient [INFO] Retrying request”…
为此,我找遍了中英文的一些网站,搜遍了能找的每个角落,发现了出现这种状况的原理,该java异常在客户端和服务器端都
有可能发生,引起该异常的原因有两个:
1,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发
该异常(Connect reset by peer)。
2,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是
在连接断开后的读和写操作引起的。
于是我简单的认为通过设置一些socket的timeout时间,就能解决:
但是设置以后情况依然是那样。
这个问题困扰了好几天,每天都在思考和对比测试中,以求发现造成这个原因代码的地方,我不禁思考,同样数量的关键词数
量前提下,为什么之前批量查询排名数据没有出错,而最近会频繁报错,这到底是为什么?是被请求的接口网站屏蔽掉了我们
的服务器ip?这个理由也不是很充分,肯定是程序中某个地方没有合理释放掉connection的连接导致!
在这个思路的指引下,通过几天连续的奋战和实践,今天终于发现了问题的本质,那就是那个timer的方法导致的!情况是这
样的,这几天,我在手动触发一些批量任务,发现在过滤排名值为100的情况下,java的java.net.SocketException:
Connection reset 这个错会一直抛出,而且刷屏特别厉害,在仔细对照了timer的这段代码
后,终于猛然醒悟,对!就是这里出问题了,我自己来分析一下:
一个函数值,它返回的值,是一个临界值,但是我这个timer的方法中,判断了返回的值如果是临界值的话,会迫使它在10秒
内继续执行那个方法,而这个方法是要去获取一个页面中源代码的一个特定数据,每次这个方法执行会消耗掉几十毫秒的时



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1