当前位置:  编程技术>java/j2ee

java.net.SocketException: Connection reset 解决方法

    来源: 互联网  发布时间:2014-10-23

    本文导语:  自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过程中会经常报以下的错误: “2011-12-03 18:00:32 DefaultHttpClient [INFO] I/O exception (java.net.SocketException) caught when processing ...

自从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命名空间java.net类socketexception的类成员方法: socketexception定义及介绍
  • java命名空间java.sql接口connection的类成员方法: gettransactionisolation定义及介绍
  • I/O故障java.net.ConnectException: Connection refused: connect
  • java命名空间java.sql接口connection的类成员方法: settransactionisolation定义及介绍
  • java.sql.SQLException:Can not open connection with full database pool(20)
  • java命名空间java.sql接口connection的类成员方法: clearwarnings定义及介绍
  • 本页的java.sql.Connection sqlCon怎么传給内部类使用?
  • java命名空间java.sql接口connection的类成员方法: isreadonly定义及介绍
  • java连接数据库,将statement,connection放入一个状态类,其他的类调用,
  • java命名空间java.sql接口connection的类成员方法: getautocommit定义及介绍
  • java命名空间java.sql接口connection的类成员方法: getmetadata定义及介绍
  • java命名空间java.sql接口connection的类成员方法: rollback定义及介绍
  • java命名空间java.sql接口connection的类成员方法: commit定义及介绍
  • java命名空间java.sql接口connection的类成员方法: close定义及介绍
  • java命名空间java.sql接口connection的类成员方法: isclosed定义及介绍
  • java命名空间java.sql接口connection的类成员方法: setcatalog定义及介绍
  • java命名空间java.sql接口connection的类成员方法: getcatalog定义及介绍
  • java命名空间java.sql接口connection的类成员方法: gettypemap定义及介绍
  • java命名空间java.sql接口connection的类成员方法: settypemap定义及介绍
  • java命名空间java.sql接口connection的类成员方法: transaction_none定义及介绍
  • java命名空间java.sql接口connection的类成员方法: getholdability定义及介绍
  • java命名空间java.sql接口connection的类成员方法: transaction_read_committed定义及介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 感觉java胜任大型企业级的任务绰绰有余了,可是面对一些小些企业的解决方案听的并不是很多,所以我希望听听各位的看法(如果实际解决过这
  • 请问java中多态性是怎么解决的?
  • java 对树的操作,TreeSet,能否插入相同的数据,如果相同,如何解决
  • Java条形码解决方案 Barbecue
  • Java报表解决方案 OpenReports
  • java.lang.NoclassDefFoundError,怎么解决?
  • 用Java可以解决这个问题吗?急!!!
  • LINUX下的JAVA串口通讯问题,如能解决,不胜感激
  • java中怎样解决汉字乱码问题?
  • 寻找基于JAVA/J2EE的CRM解决方案
  • Java 监控解决方案 Apache Sirona
  • java中出现outofmemory的错误,这要怎么解决?
  • CSS属性参考手册 iis7站长之家
  • 我刚刚学java,可是碰到下面一个问题,请问该如何解决。
  • 解决java 查看JDK中底层源码的实现方法
  • 请教高手:在基于Java的三层分布式结构应用中的打印的解决方案(套打)
  • 贴几篇文章,关于Java 编程技术中汉字问题的分析及解决,大家共同学习吧......
  • Java的Web开发解决方案 OpenHandX
  • java中tomcat的80端口被占用问题解决
  • Error: java.lang.ArrayIndexOutOfBoundsException,什么意思?如何解决?
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3