精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

記一次網絡請求連接超時的事故

網絡 通信技術
從HTTP請求超時、重試機制、操作系統網絡等層面剖析了事故的原因,最終解決業務問題。

[[338985]]

本文轉載自微信公眾號「搬運工來架構」,作者cocodroid。轉載本文請聯系搬運工來架構公眾號。

前言

從HTTP請求超時、重試機制、操作系統網絡等層面剖析了事故的原因,最終解決業務問題。

這里先拋兩個問題:

1)你遭遇過由于網絡連接或請求超時造成的生產事故嗎?

2)你知道操作系統默認的網絡連接超時是多少秒?

先思考下,可以將你的答案寫在評論區哦。

問題背景

最近同事出現這么一個問題,簡單業務場景:

 

服務A使用HTTP請求服務B接口m。服務A起了一個定時任務Task:

從db查詢數據總共有1200+條,每條記錄對應一次請求,循環調用m接口。服務B收到請求會使用TCP連接其它服務器機器,進行命令的交互。注意這里并不是異步并發去請求接口,因為如果異步并發請求,可能就造成服務B的處理線程很快用光,從而造成不會再很好的處理更多請求,甚至會造成大面積請求超時或服務宕機等等問題。

此時定時任務到時間跑起來了,過不了多久,服務A出現向B請求Hand住,最終出現超時。

 

如下超時日志Read timed out:

 

雖然服務A自身查詢DB等服務是正常的,但是服務A和服務B之間的交互也很重要,如果兩者之間出現問題,必然會對業務處理或者系統等方面造成影響。

所以到底是為什么,這里涉及了什么問題呢?

問題解決

1、重試機制加快問題出現

此時在服務A上進行排查,通過elk日志發現異常日志,異常日志數量激增。如下截圖:

 

異常日志明細:

 

org.apache.http.impl.execchain.RetryExec,由此可知應該跟http重試機制相關。

 

由RetryExec源碼可知,當http執行請求時,如果正常請求則立即返回;否則IOException異常時,則進入重試環節。

這里要注意下,for循環進行重試是死循環的方式,這里的重試次數由實現者控制,如果無需重試,默認則不會進行重試,而是直接拋出異常。

查看RetryHandler的自定義實現源碼:

  1. @Component 
  2. public class HttpRequestRetryHandlerServer implements HttpRequestRetryHandler { 
  3.    protected static final Logger LOG = LoggerFactory.getLogger(HttpRequestRetryHandlerServer.class); 
  4.    @Override 
  5.    public boolean retryRequest(IOException e, int retryCount, HttpContext httpCtx) { 
  6.       if (retryCount >= 3) { 
  7.          LOG.warn("Maximum tries reached, exception would be thrown to outer block"); 
  8.          return false
  9.       } 
  10.       if (e instanceof org.apache.http.NoHttpResponseException) { 
  11.          LOG.warn("No response from server on {} call", retryCount); 
  12.          return true
  13.       } 
  14.       return false
  15.    } 

從源碼知道,重試次數最多3次,并且只針對這種異常NoHttpResponseException,從命名知道這是HTTP無響應異常(源碼注釋是:Signals that the target server failed to respond with a valid HTTP response.)。

那么服務A為什么會進入重試流程呢?

由上面的異常知道,可以排除是由于網絡連接超時出現的異常,而是正常請求,但是由于可能某種原因,遲遲沒有得到正常響應結果。由前面的異常Read timed out知道是出現讀超時異常,這里就考慮到可能是跟網絡數據傳輸等參數相關。

查看默認配置:

 

由此可知,6秒是數據傳輸的最長時間(讀超時)。http請求時等待數據結果如果超過6秒,就會中斷當前的請求,拋出Read timed out異常。所以基本上就可以知道這個異常的原由了。

2、重試機制加快問題-解決方法:

分析當前場景,于是做下調整:

1)由于此場景http請求無需進行重試,則將其關閉:

  1. @Bean 
  2. public CloseableHttpClient noRetryHttpClient(HttpClientBuilder clientBuilder) { 
  3.     // 重試次數為0,不進行重試 
  4.     clientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(0, false)); 
  5.     return clientBuilder.build(); 

2)由于此業務請求,服務B可能出現超過6秒的處理時長,則socketTimeout調整為15秒:

  1. # http pool config 
  2. http: 
  3.   maxTotal: 500 
  4.   defaultMaxPerRoute: 100 
  5.   connectTimeout: 5000 
  6.   connectionRequestTimeout: 3000 
  7.   socketTimeout: 15000 
  8.   maxIdleTime: 1 
  9.   keepAliveTimeOut: 65 

3、機器連接超時的鍋

 

接下來再排查服務B到底是怎么了?也就是上圖的右側“閃電”。為什么需要這么長的處理時間。

服務A發起Http請求時,服務B接收請求后進行跟服務器進行連接后交互數據。服務B與服務機器通信只要是使用Tcp ssh的方式,也就是會進行網絡通信。

經過排查服務B的日志:

 

可知,進行連接服務器時出現異常。注意這個連接耗時時長為:63秒左右。并且確認排查目標服務器確實沒有正常工作,而是已經停機許久。

由于進行的是Unix平臺的網絡連接,當前的操作系統是Linux CentOS。那么為什么這個超時時間是63秒,而不是5秒、15秒、60秒等比較規整的數據呢?

此時查看網絡連接的代碼:

  1. connection.connect(); 

可知這里并沒有指定連接超時等參數,那么應該是使用了操作系統內核的默認參數了。

Linux 系統默認的建立 TCP 連接的超時時間為 127 秒。這個對于客戶端一般都是比較長了,更多的業務場景基本不會使用默認值,而是根據業務場景進行設置合理的連接超時時間。那么這個時間是怎么來的?為什么是127?

其實這個時間參數是由:net.ipv4.tcp_syn_retries配置的等級來確定的。

net.ipv4.tcp_syn_retries 的設置,表示應用程序進行connect()系統調用時,在對方不返回SYN + ACK的情況下(也就是超時的情況下),第一次發送之后,內核最多重試幾次發送SYN包;并且決定了等待時間。

Linux上的默認值是 net.ipv4.tcp_syn_retries = 6 ,也就是說如果是本機主動發起連接,(即主動開啟TCP三次握手中的第一個SYN包),如果一直收不到對方返回SYN + ACK ,那么應用程序最大的超時時間就是127秒。

第 1 次發送 SYN 報文后等待 1s(2 的 0 次冪),如果超時,則重試;

第 2 次發送后等待 2s(2 的 1 次冪),如果超時,則重試;

第 3 次發送后等待 4s(2 的 2 次冪),如果超時,則重試;

第 4 次發送后等待 8s(2 的 3 次冪),如果超時,則重試;

第 5 次發送后等待 16s(2 的 4 次冪),如果超時,則重試;

第 6 次發送后等待 32s(2 的 5 次冪),如果超時,則重試;

第 7 次發送后等待 64s(2 的 6 次冪),如果超時,則超時失敗。

接下來查看我們的機器上的tcp syn 參數:

 

而我們的服務器設置的tcp_syn_retries為5,即默認超時為=1+2+4+8+16+32=63秒。剛好與當前問題完美符合,這就是為什么出現63秒超時原由了。

4、那么在Windows平臺,又是怎么樣的呢?

(本來這部分不準備闡述的,希望讀者自行查閱資料,但是還是做個完整的吧。)

因為我是用Windows10作為開發機器的,所以順便想了解下在Windows平臺下,它的超時時間是多少。寫了個測試用例,一測,竟然是21秒左右。這又是什么原理??

查閱相關資料:

TcpMaxConnectRetransmissions

Determines how many times TCP retransmits an unanswered request for a new connection. TCP retransmits new connection requests until they are answered, or until this value expires.

TCP/IP adjusts the frequency of retransmissions over time. The delay between the original transmission and the first retransmissions for each interface is determined by the value of TcpInitialRTT (by default, it is 3 seconds). This delay is doubled after each attempt. After the final attempt, TCP/IP waits for an interval equal to double the last delay and then abandons the connection request.

TcpInitialRTT

Determines how quickly TCP retransmits a connection request if it doesn't receive a response to the original request for a new connection.

By default, the retransmission timer is initialized to 3 seconds, and the request (SYN) is sent twice, as specified in the value of TcpMaxConnectRetransmissions.

由資料可知,在Windows平臺上是由此參數:TcpMaxConnectRetransmissions和TcpInitialRTT控制,TcpMaxConnectRetransmissions默認值一般為2,TcpInitialRTT默認是3秒。

也就是會進行2次重試,每次是上次的2倍時間,即21秒為:3+3*2+(3*2)*2=3+6+12=21秒。

通過命令查詢Windows參數:

  1. netsh interface tcp show global 

 

這個最大SYN重新傳輸次數我的公司開發機器是2,但是我的個人機器卻為4(那么默認連接超時時長為:3+6+12+24+48=93秒),雖然都是Windows10系統,但是為什么不同這個就不得而知了。

5、機器連接超時的鍋-解決方法:

服務B網絡連接服務器時設置連接超時時間為5秒:

  1. connection.connect(null, 5000, kexTimout); 

這樣只要超過5秒還沒能連接上,就做超時異常處理,及早釋放資源,不再阻塞當前處理線程。

6、結果:

通過相關的調整優化,重新發布服務驗證,最終服務穩定運行,不會再出現異常等情況。

perfect!

總結

1)雖然這次事故造成的罪魁禍首不是服務A的HTTP重試機制,但是也是它加快了問題的出現速度。

所以我們要清楚是否需要重試機制,如果不需要就不要設置,不然非常浪費資源,甚至會壓垮服務提供方系統等問題。

2)網絡連接一般有TCP和HTTP等,防止超時時間太久影響業務、甚至造成服務宕機等嚴重問題,一般都要設置合理的超時時間(連接超時時間和數據傳輸時間等)。

因為操作系統設置的是比較通用的默認參數,并不會考慮具體的業務場景。

網絡數據傳輸時間:具體的業務場景是非常不同的,比如默認6秒的數據傳輸時間,在實際的場景下并不一定合理,此時需要根據實際進行調整,比如我這邊的情況是調整為15秒。

網絡連接超時:比如Windows平臺網絡連接超時默認一般是21秒,Linux(Centos)有默認階梯超時機制,默認127秒,而在我這臺機器上則是63秒。

 

3)學習操作系統超時機制。比如Linux或Windows,在連接超時時可以在前面的超時時間增加倍數,可以學以致用到我們的業務開發中去。

 

責任編輯:武曉燕 來源: 搬運工來架構
相關推薦

2021-03-05 22:41:55

CDH集群CDH集群

2022-05-12 09:52:09

網絡架構HTTP跨域保護機制

2021-04-13 08:54:28

dubbo線程池事故排查

2022-11-16 08:00:00

雪花算法原理

2023-04-06 07:53:56

Redis連接問題K8s

2020-09-25 07:57:42

生產事故系統

2025-03-11 08:48:35

JVMOOM事故

2021-10-14 10:53:20

數據庫查詢超時

2022-10-10 17:52:08

CPUERP系統

2021-05-26 11:06:06

Kubernetes網絡故障集群節點

2021-11-11 16:14:04

Kubernetes

2022-02-23 10:12:58

CPUWeb.NET

2021-05-31 10:08:44

工具腳本主機

2013-01-17 10:31:13

JavaScriptWeb開發firebug

2021-05-13 08:51:20

GC問題排查

2011-02-22 09:29:23

jQueryJavaScript

2019-03-15 16:20:45

MySQL死鎖排查命令

2013-04-01 10:27:37

程序員失業

2021-12-20 10:15:16

zip密碼命令網絡安全

2023-06-07 07:31:04

PC端app脫殼技巧
點贊
收藏

51CTO技術棧公眾號

欧美激情图片小说| 亚洲精品成人无码毛片| 午夜伦全在线观看| 国产成a人无v码亚洲福利| 97视频com| 国产麻豆a毛片| 精品综合久久88少妇激情| 欧美性生活久久| 国产 国语对白 露脸 | 992tv国产精品成人影院| 亚洲天堂2014| 日本高清不卡一区二区三| 国产精品人人爽| 国产精品久久久久9999高清| 日韩在线视频播放| 在线精品一区二区三区| 欧美激情不卡| 欧美午夜精品久久久久久浪潮| 在线视频亚洲自拍| 久久精品蜜桃| 99视频在线精品| 成人深夜直播免费观看| 好吊色在线视频| 在线观看日韩av电影| 中文字幕国产精品| 亚洲av无码国产精品久久| 国产麻豆一区二区三区| 日本久久一区二区三区| 日本熟妇人妻xxxx| 3d玉蒲团在线观看| 国产精品亲子乱子伦xxxx裸| 精品一区二区不卡| 成人免费视频国产免费麻豆| 黄一区二区三区| 国产精品免费久久久久久| 国产成人在线免费观看视频| 国产精品av久久久久久麻豆网| 日韩一区二区福利| 欧美人妻一区二区三区| 亚洲三级网页| 国产婷婷97碰碰久久人人蜜臀| 国产精品偷伦视频免费观看了| 日韩福利影视 | av中文字幕在线免费观看| 久久精品国产免费| 日韩免费av片在线观看| 天天干天天干天天操| 日韩午夜高潮| 97热精品视频官网| 亚洲日本韩国在线| 国产欧美日韩一区二区三区在线| 欧美激情精品久久久久久免费印度| 182在线观看视频| 97精品一区| 久久精品久久久久| 欧美色图亚洲视频| 欧美日韩精品一本二本三本| 久久最新资源网| 天天鲁一鲁摸一摸爽一爽| 五月天久久久| 久久国产精品久久久久| 一区二区成人免费视频| 欧美日韩精品| 51色欧美片视频在线观看| 久久久久久久久久免费视频| 一区二区国产精品| 欧美制服第一页| 伊人成年综合网| 久久成人免费电影| 51国偷自产一区二区三区| 亚洲第一天堂在线观看| 99re这里只有精品首页| 欧美精品一区二区视频| 国产福利在线看| 国产精品国产三级国产a| 日本久久高清视频| xxx.xxx欧美| 欧美视频中文在线看| 亚洲色图久久久| 秋霞影院一区| 日韩电影免费观看在线观看| 欧美 日韩 成人| 在线观看免费一区二区| 韩日精品中文字幕| 日韩中文字幕高清| 国内精品视频666| 国产日韩三区| xxxxx日韩| 依依成人综合视频| 中国丰满人妻videoshd| 青青草国产一区二区三区| 欧美电影免费提供在线观看| aaaaaav| 久久中文字幕av一区二区不卡| 欧美日韩成人在线播放| 国产精品21p| 狠狠网亚洲精品| 欧美成熟毛茸茸复古| 国产精品刘玥久久一区| 欧美日韩在线看| 激情在线观看视频| 沈樵精品国产成av片| 久久综合久久88| 国产农村妇女aaaaa视频| 国产真实乱子伦精品视频| 九色91视频| 中文字幕在线观看网站| 日本精品一级二级| 台湾佬美性中文| 日韩精品dvd| 88xx成人精品| www.97超碰| 国产精品久久久久aaaa| 免费成人在线视频网站| 成人午夜888| 国产一区二区三区视频| 国产成人无码精品久在线观看| 狠狠狠色丁香婷婷综合久久五月| 欧美lavv| 老司机深夜福利在线观看| 91精品国产丝袜白色高跟鞋| 少妇人妻好深好紧精品无码| 亚洲激情二区| 51蜜桃传媒精品一区二区| 超碰国产在线| 色综合天天狠狠| 亚洲精品女人久久久| 激情久久久久| 99国产在线| 黄色网页在线看| 欧美三级视频在线观看| 国产精品毛片一区二区| 国产欧美69| 精品免费国产| xxxx视频在线| 亚洲国产精品成人va在线观看| 国产精品九九九九九九| 日本大胆欧美人术艺术动态| 快播亚洲色图| 9i看片成人免费高清| 日韩电影中文 亚洲精品乱码| 国产精品自拍视频一区| 国产sm精品调教视频网站| 欧美精品一区二区性色a+v| 亚洲午夜国产成人| 久久精品91久久久久久再现| 亚洲熟妇无码久久精品| 国产精品久久久久久久久快鸭 | 伊人久久综合97精品| 日韩不卡在线播放| 91免费视频网| 成年人在线看片| 国产a久久精品一区二区三区| 日本不卡免费高清视频| 久草视频在线看| 欧美视频在线观看一区二区| 中文字幕精品亚洲| 精品亚洲成av人在线观看| 国产精品波多野结衣| 国产一区二区三区精品在线观看| 久久电影一区二区| 亚洲va欧美va| 天天色综合成人网| 国产在线观看无码免费视频| 日韩黄色一级片| 亚洲高清资源综合久久精品| 91精品国产一区二区在线观看| 久久视频这里只有精品| 亚洲av无码国产综合专区 | 俺去了亚洲欧美日韩| 国产原创中文av| 亚洲午夜三级在线| 激情综合丁香五月| 日本人妖一区二区| 中文字幕成人一区| 成人福利免费在线观看| **欧美日韩vr在线| 成人亚洲性情网站www在线观看| 欧美特级限制片免费在线观看| 在线日韩国产网站| 不卡一区在线观看| www.xxx亚洲| 亚洲蜜桃视频| 欧美精品在线一区| 精品国产18久久久久久二百| 97在线视频一区| 成年在线电影| 日韩精品一区二区三区蜜臀| 无码人妻久久一区二区三区| 亚洲视频一区二区在线| 日韩av无码一区二区三区不卡| 久久久人人人| 超级碰在线观看| 免费视频亚洲| 91青青草免费观看| 性欧美videohd高精| 久久福利视频网| 国产福利第一视频在线播放| 欧美不卡一区二区| 中文字幕av免费观看| 亚洲福利视频一区| 国产在视频线精品视频| 不卡视频免费播放| 国产传媒免费观看| 久久一日本道色综合久久| 国产爆乳无码一区二区麻豆| 精品亚洲成人| 精品伦理一区二区三区| 国产电影一区二区| 国产成人免费av电影| 成人av影院在线观看| 久久精品国产69国产精品亚洲 | 一卡二卡在线视频| 日韩欧美中文在线| 久久久久久久久久综合| 国产精品国产自产拍高清av | 91欧美一区二区三区| 日韩在线卡一卡二| 蜜桃传媒一区二区三区| 亚洲一区二区三区| 亚洲精品美女久久7777777| 亚洲aa在线| 国产精选在线观看91| 激情不卡一区二区三区视频在线 | 久久精品视频16| 欧美99久久| 99精品一级欧美片免费播放| 日韩欧美午夜| 日韩在线三区| 欧美在线观看视频一区| 欧美精品一区三区在线观看| 欧美激情久久久久久久久久久| 99se婷婷在线视频观看| 久久久久久爱| 亚洲综合日韩在线| 精品中文在线| 91成人在线看| 亚洲视频三区| 国产高清自拍一区| 91久久偷偷做嫩草影院电| 1区1区3区4区产品乱码芒果精品| 成人免费91| 91久久久久久久久久久| 九七电影院97理论片久久tvb| 国产精品久久久久久网站| 国产精品扒开腿做爽爽爽视频软件| 91国产美女在线观看| 国产在线看片免费视频在线观看| 国模精品系列视频| yellow字幕网在线| 7777精品视频| 激情都市亚洲| 国产精品白嫩初高中害羞小美女 | 欧美日韩国产综合草草| 亚洲天堂一二三| 欧美电影影音先锋| 国产夫妻在线观看| 精品国产百合女同互慰| 日本精品一二区| 亚洲免费视频一区二区| 黄色在线小视频| 中文字幕日韩av综合精品| 免费日本一区二区三区视频| 免费不卡在线观看av| av漫画网站在线观看| 欧美最猛性xxxxx亚洲精品| sis001欧美| 国产女人18毛片水18精品| 成人51免费| 国产欧美日韩伦理| 欧美国产极品| 午夜精品福利一区二区| 亚洲激情中文| 国产黄视频在线| 免费观看久久久4p| 中文字幕第10页| 91网页版在线| 国产免费美女视频| 图片区小说区区亚洲影院| 日本中文字幕在线观看视频| 欧美理论片在线| 成人乱码一区二区三区| 亚洲天堂成人在线| 91香蕉在线观看| 欧美中文字幕视频| 亚洲人成网站在线在线观看| yellow视频在线观看一区二区| 伊人成综合网yiren22| 一区二区三区在线视频111| 精品动漫一区| 色噜噜狠狠一区二区| 成人美女视频在线观看| 国产精品久久久视频| 亚洲一区二区三区不卡国产欧美| 国产91国语对白在线| 91麻豆精品国产自产在线观看一区 | 在线观看免费小视频| 亚洲精品成人少妇| 亚洲 欧美 中文字幕| 日韩欧美成人午夜| 国产在线网站| 午夜精品一区二区三区在线视频| 国产成人精选| 国产一区二区在线网站| 午夜国产一区二区| 成人黄色片视频| 国产不卡一区视频| 国产探花视频在线| 天天综合网 天天综合色| 国产免费不卡av| 国产午夜精品全部视频在线播放| 日本三级韩国三级欧美三级| 国产欧美日韩中文字幕在线| 欧洲精品一区| 久久99久久99精品| 国产一区三区三区| 中国女人特级毛片| 欧美日韩性视频| 免费国产精品视频| 欧美成人精品在线| 日韩欧乱色一区二区三区在线| 欧美日韩高清在线一区| 亚洲福利久久| 香蕉久久久久久av成人| 中文字幕一区二区三区精华液| 国产熟妇一区二区三区四区| 亚洲精品国产精品国自产在线| 羞羞电影在线观看www| 91精品国产综合久久久久久久久| 精品日本12videosex| 欧洲av无码放荡人妇网站| a美女胸又www黄视频久久| 成人观看免费视频| 4438x成人网最大色成网站| 幼a在线观看| 国产乱人伦真实精品视频| 欧美日韩中文字幕一区二区三区| aaa毛片在线观看| 91免费国产在线| 天天综合网入口| 日韩精品高清在线观看| 华人av在线| 国产在线播放一区二区| 国产一区导航| 免费观看av网站| 色一情一乱一乱一91av| 国产中文字幕在线| 国产成人精品久久| 欧美精品久久久久久| 欧美激情精品久久久久久小说| 久久中文娱乐网| 天堂网免费视频| 在线看日韩av| 激情综合五月| 六月婷婷激情综合| 99在线精品免费| 91在线视频免费播放| 亚洲最大中文字幕| 青娱乐极品盛宴一区二区| 宅男一区二区三区| 国产91丝袜在线观看| 亚洲精品77777| 亚洲欧美色婷婷| 国产一区二区三区四区五区3d | 在线观看一区视频| 国产精品无码一区二区三区免费| 日韩欧美福利视频| jizz在线观看| 亚洲综合第一页| 亚洲少妇诱惑| 日日操免费视频| 日韩免费一区二区三区在线播放| jizz一区二区三区| 日韩av影视| 国产精一品亚洲二区在线视频| 国产污视频在线看| 亚洲视频999| 视频精品一区| 色婷婷综合久久久久中文字幕 | 97精品久久久午夜一区二区三区 | 青青草国产精品视频| 久久久久久久久蜜桃| 一级爱爱免费视频| 国内精品视频一区| 精品99久久| 午夜性福利视频| 91福利视频网站| 日韩三级电影视频| 日韩激情视频| 高清成人在线观看| 国产情侣免费视频| 欧美丰满少妇xxxxx| 国产探花一区在线观看| 深夜做爰性大片蜜桃| 色婷婷综合久久久中文一区二区| 国产成人l区| 欧美亚州在线观看| 国产不卡免费视频| 羞羞色院91蜜桃| 91av福利视频|