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秒内继续执行那个方法,而
这个方法是要去获取一个页面中源代码的一个特定数据,每次这个方法执行会消耗掉几十毫秒的时间,即相当于在这个时间内,是建立了一个socket连接,但
是由于它一直返回的是那个临界值,所以这个方法会在10秒内不停的建立socket连接以获取数据,如果这个方法每次执行时间大概是80ms(经过测试,
每个这样的方法执行时间为80毫秒左右),在10秒时间内,会建立10*1000/80 =
125次socket连接,即每秒会建立起12.5个socket连接,再加上由于这个是过滤的程序,多个临界值的情况会连续出现在一起,所以,在短暂的
几秒钟内,对同一个网站页面的socket连接数会飙升的很高,达到几百甚至上千,导致等待处理的请求连接数太高:

游戏编程
手机软件编程
游戏制作软件
编程入门

当初为什么会用这个定时器方法来让一个方法多执行几遍,原因就是为了获取一个数据的稳定值,但是现在想来,带来的负面影响代价是多么的大,产生的效
果是不可小觑的,不过经过几天的综合分析和测试,终于还是发现了这个罪魁祸首,问题解决后,心,一下子豁然了,可以安心睡觉了。。。

java.net.SocketException: Connection reset 解决方法的更多相关文章

  1. 最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决

    自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过程中会经常报以下的错误: “2011-12-03 18:00:32 Def ...

  2. ftp4j揭示java.net.SocketException: Connection reset的解决

    ftp4j提示java.net.SocketException: Connection reset的解决系统的自动更新FTP服务器,其他计算机连接都没有问题,包括xp.server2008.win7. ...

  3. SSLv3协议、TLSv1.2协议配置不对导致javax.ws.rs.ProcessingException: java.net.SocketException: Connection reset

    SSl:Secure Sockets Layer 安全套接层 TLS:Transport Layer Security传输层安全 是为网络通信提供安全及数据完整性的一种安全协议.TLS与SSL在传输层 ...

  4. 异常查错java.net.SocketException: Connection reset

    用httpclient访问后台接口报错java.net.SocketException: Software caused connection abort: recv failed,百度了一圈都说是由 ...

  5. java.net.SocketException: Connection reset

    java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java ...

  6. java.net.SocketException: Connection reset 硬件防火墙也有罪?

    今天早上例行进行远程备份,可是我却发现,整个备份过程无法顺利完成. 在备份的过程中不断的抛出异常: java.net.SocketException: Connection reset 奇怪,在之前的 ...

  7. java.net.SocketException: Connection reset 问题分析

    1. socket编程时容易碰到如下异常: java.net.SocketException: Connection reset by peer: socket write error at java ...

  8. 高并发下载tomcat下的文件时,发生java.net.SocketException: Connection reset解决方案

    (1)问题产生:使用500个线程并发下载tomcat工程中的一个文件时,服务器出现java.net.SocketException: Connection reset异常, 客户端出现connect ...

  9. JMeter压测“java.net.SocketException: Socket closed”解决方法

    报错详情: java.net.SocketException: Socket closed at java.net.SocketInputStream.socketRead0(Native Metho ...

随机推荐

  1. 用log(N)的解法实现数值的整数次方

    // // main.m // c++test // // Created by andyyang on 6/3/13. // Copyright (c) 2013 andyyang. All rig ...

  2. linux命令行模式下实现代理上网(转)

    有些公司的局域网环境,例如我们公司的只允许使用代理上网,图形界面的很好解决就设置一下浏览器的代理就好了,但是linux纯命令行的界面就....下面简单几步就可以实现了! 一.命令行界面的一般代理设置方 ...

  3. Swift - 访问控制(private,internal,public)

    在Swift语言中,访问修饰符有三种,分别为private,internal和public.同时,Swift对于访问权限的控制,不是基于类的,而是基于文件的.其区别如下: 1,private priv ...

  4. Eclipse中快捷键的使用

    1:引入包   ctrl+shift+o 2:对输入进行提示:Alt+/ 3: 全局搜索:crtrl + h 4:Eclipse创建方法快捷键Alt+shift+M 5:Eclipse创建局部变量快捷 ...

  5. python基础教程_学习笔记1:序列-1

    序列 数据结构:通过某种方式组织在一起的数据元素的集合,这些数据元素能够是数字或者字符,甚至能够是其它数据结构. python中,最主要的数据结构是序列. 序列中的每一个元素被分配一个序号--即元素的 ...

  6. 新手推荐:IIS+PHP+MYSQL环境配置教程

    本文介绍刚开始接触php的朋友如何为自己的服务器配置php环境 首先我们要的工具: 1.IIS:这个当然是不能少的了,用系统自带的就好了,这里就不教大家怎么装了. 2.PHP:php-5.2.0-wi ...

  7. UITableView性能优化及手工绘制UITableViewCell

    提高表视图的性能 UITableView作为应用中最常用的视图,它的性能优化问题几乎是经常提及.下面对在非网络访问情况下的表视图性能优化进行了主要的几点说明: 1.自定义类或XIB文件时 在系统提供的 ...

  8. iOS视图控制器之间delegate传值教程

    之前在StackOverFlow上看到一篇讲传值(segue传值和delegate传值)的文章,感觉讲的非常清晰,就将delegate部分翻译了一下.有兴趣能够看看. 原文: http://stack ...

  9. Eclipse Tips

    一.取消拼写检查 Window -> Preferences -> General -> Editors -> Text Editors -> Spelling -> ...

  10. 2014年百度之星程序设计大赛 - 资格赛 第二题 Disk Schedule

    双调欧几里得旅行商问题是一个经典动态规划问题.<算法导论(第二版)>思考题15-1和北京大学OJ2677都出现了这个题目. 旅行商问题描写叙述:平面上n个点,确定一条连接各点的最短闭合旅程 ...