欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年03月20日 14:21:57   作者:  
最近糾結(jié)致死的一個java報錯java.net.SocketException: Connection reset 終于得到解決

自從SEOTcs系統(tǒng)11月份24日更新了一下SEO得分算法以來,一直困擾我的一個問題出現(xiàn)了,java的數(shù)據(jù)job任務(wù),在執(zhí)行過程中會經(jīng)常報以下的錯誤:

“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”…

為此,我找遍了中英文的一些網(wǎng)站,搜遍了能找的每個角落,發(fā)現(xiàn)了出現(xiàn)這種狀況的原理,該java異常在客戶端和服務(wù)器端都有可能發(fā)生,引起該異常的原因有兩個:

1,如果一端的Socket被關(guān)閉(或主動關(guān)閉,或因?yàn)楫惓M顺龆?引起的關(guān)閉),另一端仍發(fā)送數(shù)據(jù),發(fā)送的第一個數(shù)據(jù)包引發(fā)該異常(Connect reset by peer)。

2,一端退出,但退出時并未關(guān)閉該連接,另一端如果在從連接中讀數(shù)據(jù)則拋出該異常(Connection reset)。簡單的說就是在連接斷開后的讀和寫操作引起的。

于是我簡單的認(rèn)為通過設(shè)置一些socket的timeout時間,就能解決:

但是設(shè)置以后情況依然是那樣。

這個問題困擾了好幾天,每天都在思考和對比測試中,以求發(fā)現(xiàn)造成這個原因代碼的地方,我不禁思考,同樣數(shù)量的關(guān)鍵詞數(shù)量前提下,為什么之前批量查詢排名數(shù)據(jù)沒有出錯,而最近會頻繁報錯,這到底是為什么?是被請求的接口網(wǎng)站屏蔽掉了我們的服務(wù)器ip?這個理由也不是很充分,肯定是程序中某個地方?jīng)]有合理釋放掉connection的連接導(dǎo)致!

在這個思路的指引下,通過幾天連續(xù)的奮戰(zhàn)和實(shí)踐,今天終于發(fā)現(xiàn)了問題的本質(zhì),那就是那個timer的方法導(dǎo)致的!情況是這樣的,這幾天,我在手動觸發(fā)一些批量任務(wù),發(fā)現(xiàn)在過濾排名值為100的情況下,java的java.net.SocketException: Connection reset 這個錯會一直拋出,而且刷屏特別厲害,在仔細(xì)對照了timer的這段代碼

 

后,終于猛然醒悟,對!就是這里出問題了,我自己來分析一下:

一個函數(shù)值,它返回的值,是一個臨界值,但是我這個timer的方法中,判斷了返回的值如果是臨界值的話,會迫使它在10秒內(nèi)繼續(xù)執(zhí)行那個方法,而這個方法是要去獲取一個頁面中源代碼的一個特定數(shù)據(jù),每次這個方法執(zhí)行會消耗掉幾十毫秒的時間,即相當(dāng)于在這個時間內(nèi),是建立了一個socket連接,但是由于它一直返回的是那個臨界值,所以這個方法會在10秒內(nèi)不停的建立socket連接以獲取數(shù)據(jù),如果這個方法每次執(zhí)行時間大概是80ms(經(jīng)過測試,每個這樣的方法執(zhí)行時間為80毫秒左右),在10秒時間內(nèi),會建立10*1000/80 = 125次socket連接,即每秒會建立起12.5個socket連接,再加上由于這個是過濾的程序,多個臨界值的情況會連續(xù)出現(xiàn)在一起,所以,在短暫的幾秒鐘內(nèi),對同一個網(wǎng)站頁面的socket連接數(shù)會飆升的很高,達(dá)到幾百甚至上千,導(dǎo)致等待處理的請求連接數(shù)太高:

當(dāng)初為什么會用這個定時器方法來讓一個方法多執(zhí)行幾遍,原因就是為了獲取一個數(shù)據(jù)的穩(wěn)定值,但是現(xiàn)在想來,帶來的負(fù)面影響代價是多么的大,產(chǎn)生的效果是不可小覷的,不過經(jīng)過幾天的綜合分析和測試,終于還是發(fā)現(xiàn)了這個罪魁禍?zhǔn)?,問題解決后,心,一下子豁然了,可以安心睡覺了。。。

相關(guān)文章

  • java中 String和StringBuffer的區(qū)別實(shí)例詳解

    java中 String和StringBuffer的區(qū)別實(shí)例詳解

    這篇文章主要介紹了java中 String和StringBuffer的區(qū)別實(shí)例詳解的相關(guān)資料,一個小的例子,來測試String和StringBuffer在時間和空間使用上的差別,需要的朋友可以參考下
    2017-04-04
  • 淺談Java到底是值傳遞還是引用傳遞呢

    淺談Java到底是值傳遞還是引用傳遞呢

    今天帶大家學(xué)習(xí)Java的相關(guān)知識,文章圍繞著Java到底是值傳遞還是引用傳遞展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java實(shí)現(xiàn)搶紅包算法(公平版和手速版)

    java實(shí)現(xiàn)搶紅包算法(公平版和手速版)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)搶紅包算法,分為公平版和手速版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • Java中BeanUtils.copyProperties的11個坑總結(jié)

    Java中BeanUtils.copyProperties的11個坑總結(jié)

    我們?nèi)粘i_發(fā)中,經(jīng)常涉及到DO、DTO、VO對象屬性拷貝賦值,很容易想到org.springframework.beans.BeanUtils的copyProperties,它會自動通過反射機(jī)制獲取源對象和目標(biāo)對象的屬性,pyProperties,會有好幾個坑呢,本文將給大家總結(jié)一下遇到的坑,需要的朋友可以參考下
    2023-05-05
  • 徹底搞懂Java多線程(一)

    徹底搞懂Java多線程(一)

    這篇文章主要給大家介紹了關(guān)于Java面試題之多線程和高并發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • java基于C/S模式實(shí)現(xiàn)聊天程序(服務(wù)器)

    java基于C/S模式實(shí)現(xiàn)聊天程序(服務(wù)器)

    這篇文章主要為大家詳細(xì)介紹了java基于C/S模式實(shí)現(xiàn)聊天程序的服務(wù)器篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解SpringBoot Mybatis如何對接多數(shù)據(jù)源

    詳解SpringBoot Mybatis如何對接多數(shù)據(jù)源

    這篇文章主要為大家介紹了SpringBoot Mybatis如何對接多數(shù)據(jù)源實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java Mail郵件接收工具類

    java Mail郵件接收工具類

    這篇文章主要介紹了java Mail郵件接收工具類,本文直接給出類實(shí)現(xiàn)代碼和使用示例,需要的朋友可以參考下
    2015-02-02
  • Java經(jīng)典排序算法之快速排序代碼實(shí)例

    Java經(jīng)典排序算法之快速排序代碼實(shí)例

    這篇文章主要介紹了Java經(jīng)典排序算法之快速排序代碼實(shí)例,快速排序?qū)崿F(xiàn)的思想是指通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,需要的朋友可以參考下
    2023-10-10
  • log4j詳細(xì)的常用配置說明介紹

    log4j詳細(xì)的常用配置說明介紹

    下面看我怎么一步步配置到控制臺的,log4j的輸出級別和輸出模式相信屌絲們都知道的
    2012-11-11

最新評論