精品欧美一区二区三区在线观看 _久久久久国色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视频| 国产视频在线免费观看| 亚洲激情在线| 亚洲小视频在线| 国产农村妇女精品久久| 亚洲精品福利电影| 亚洲欧美偷拍另类a∨色屁股| 国产福利久久精品| 羞羞色院91蜜桃| 亚洲视频中文| xxxxx成人.com| 性久久久久久久久久| 日韩三级精品| 欧亚一区二区三区| 日日摸日日碰夜夜爽无码| 亚洲乱亚洲乱妇| 91丨九色丨蝌蚪富婆spa| 91在线观看免费观看| 日本免费在线观看视频| 欧美日韩一卡| 久久久国产一区二区| 久久丫精品国产亚洲av不卡| 日本在线成人| 欧美精品丝袜中出| 久久精品99国产| 黄色大片在线| 亚洲欧美日韩国产手机在线| 日本精品免费| 天天综合天天色| 国产91丝袜在线播放| 国产日韩精品一区二区| 国产午夜精品久久久久| 亚洲黄色在线| 欧美国产视频日韩| 亚洲少妇xxx| 第一会所亚洲原创| 国产亚洲精品美女久久久久| www.超碰97| 卡通动漫国产精品| 精品伦理精品一区| 中国老熟女重囗味hdxx| 成人免费91| 欧美精品tushy高清| av丝袜天堂网| 美女网站视频一区| 欧美日韩在线观看视频| 日韩在线综合网| 麻豆网站免费在线观看| 五月婷婷久久综合| 日韩a∨精品日韩在线观看| 色呦呦在线资源| 一区二区激情小说| 国产夫妻自拍一区| 98色花堂精品视频在线观看| 亚洲宅男天堂在线观看无病毒| 亚洲一区二区三区精品视频| 91在线免费看| 自拍视频在线观看一区二区| 中国成人在线视频| 成人影院在线看| 一区二区三区精密机械公司| 日本黄网站色大片免费观看| 久草在线新免费首页资源站| 亚洲国产欧美在线人成| 欧美精品久久久久久久自慰| 五月天av在线| 欧美在线一二三| 中文字幕 欧美日韩| 久久伊人影院| 亚洲成avwww人| 成人手机在线免费视频| 精品在线99| 日韩中文字幕精品视频| 美女的奶胸大爽爽大片| 激情欧美一区| 国产精品九九久久久久久久| 夜夜躁很很躁日日躁麻豆| 国产乱码一区二区三区| 国产精品久久久久久久久久久久冷| 日本免费不卡视频| 国产无一区二区| 中文字幕精品—区二区日日骚| 在线观看操人| 色综合天天综合| 91插插插影院| 免费看成人哺乳视频网站| 色视频www在线播放国产成人| 欧美特级一级片| 性xx色xx综合久久久xx| 国产日韩欧美在线看| 免费看av毛片| 国产欧美精品一区| 久久福利一区二区| 在线观看精品| 精品va天堂亚洲国产| 亚洲人成人无码网www国产| 99精品小视频| 国产91|九色| 国产精品欧美激情在线| 91丨九色丨黑人外教| 日韩最新中文字幕| 最近在线中文字幕| 精品国产sm最大网站免费看 | 亚洲人成网站影音先锋播放| 国产高清av在线播放| 日本欧美在线| 亚洲欧美精品中文字幕在线| 欧美精品99久久久| 日本成人中文字幕在线视频 | 午夜剧场高清版免费观看| 久久亚州av| 欧美黑人视频一区| 亚洲性生活大片| 国产午夜精品在线观看| 男人添女荫道口喷水视频| 欧美成人一二区| 国产丝袜视频一区| 欧美日韩大片在线观看| 麻豆国产精品777777在线| 久久久久久精| 国产蜜臀在线| 欧美一级片免费看| 欧美成人短视频| 久久精品30| 牛人盗摄一区二区三区视频| 国产福利在线免费观看| 91精品国产免费| 极品久久久久久久| 久久综合五月| 女同一区二区| 中文字幕乱码在线播放| 亚洲成人精品视频| 久久无码精品丰满人妻| 国产精品88av| av电影一区二区三区| 亚洲日本免费电影| 日韩一级裸体免费视频| 日韩av免费播放| 国产欧美日韩在线| 手机看片一级片| 精品国产乱码久久久久久蜜坠欲下 | 色一情一交一乱一区二区三区| 激情欧美一区二区三区黑长吊| 精品视频在线播放免| 国产情侣在线视频| av激情综合网| 免费无遮挡无码永久视频| 亚洲欧美日本国产| 欧美激情久久久久久| 午夜久久久久久噜噜噜噜| 亚洲日本在线a| 99热这里只有精品2| 亚洲欧美网站在线观看| 91影院未满十八岁禁止入内| av电影高清在线观看| 日韩一区二区在线观看| 九九九在线视频| 不卡高清视频专区| 播放灌醉水嫩大学生国内精品| 先锋影音国产精品| 国产v综合v亚洲欧美久久| 成a人片在线观看www视频| 欧美日韩一区二区电影| 欧美激情图片小说| 高清视频一区二区| 日本免费不卡一区二区| 免费成人av| 91精品久久久久久久久青青| 国产精品一区二区三区视频网站| 日韩欧美在线1卡| 国产香蕉视频在线| 中文字幕不卡在线观看| 亚洲美女性囗交| 国产精品videosex极品| 精品毛片久久久久久| 日韩天堂在线| 欧美成人合集magnet| 神马午夜电影一区二区三区在线观看 | 精品三级av在线| 永久免费看片在线播放| 国产清纯美女被跳蛋高潮一区二区久久w| 91小视频网站| 亚洲经典在线| 午夜精品美女久久久久av福利| 亚洲三级在线| 欧美一区二区大胆人体摄影专业网站| 国产高清视频在线观看| 欧美一区二区三区视频在线| 日韩美女黄色片| 国产精品水嫩水嫩| 中文字幕天堂网| 六月丁香综合在线视频| 日本手机在线视频| 日韩在线理论| 精品婷婷色一区二区三区蜜桃| 性感美女一区二区在线观看| 久久国产精品视频| 成年人在线观看网站| 欧美精品一区二区三区在线播放 | 久久免费一区| 高清不卡一区| 日韩av免费网站| 青春草视频在线| 中文字幕综合一区| 污污网站在线免费观看| 欧美高清视频www夜色资源网| 韩国av中文字幕| 一区二区在线观看免费视频播放 | 亚洲 欧美 激情 另类| 欧美男同性恋视频网站| 国产高清中文字幕| 亚洲国产日韩综合久久精品| 成年人免费视频播放| 91网址在线看| 国产综合内射日韩久| 久久精品国产网站| av片中文字幕| 国产欧美另类| 国产av麻豆mag剧集| 欧美一区二区三区久久精品| 亚洲乱码一区二区三区| 日韩欧美四区| 国产中文一区二区| 66精品视频在线观看| 国产在线视频一区| 欧美日韩在线精品一区二区三区激情综合| 久久人人爽人人| 色呦呦视频在线观看| 久热精品视频在线| 国内精品久久久久国产| 在线观看久久久久久| 精品av中文字幕在线毛片| 日韩av最新在线观看| 亚洲国产成人在线观看| 日韩三级在线观看| 精品国产乱码一区二区三 | 污污的视频免费| 日本不卡视频一二三区| 欧美黄色一级片视频| 毛片一区二区| 黄色a级片免费| 丝袜亚洲另类丝袜在线| 粗暴91大变态调教| 麻豆成人在线| 香蕉视频禁止18| 久久99久久99| 99视频在线观看视频| 国产伦理精品不卡| 国内自拍偷拍视频| 白白色亚洲国产精品| 最新版天堂资源在线| 99国产精品国产精品毛片| 伊人网综合视频| 91欧美一区二区| 自拍偷拍视频亚洲| 国产精品三级久久久久三级| 992在线观看| 伊人色综合久久天天| 国产无遮挡aaa片爽爽| 精品女厕一区二区三区| 香蕉影院在线观看| 欧美日韩卡一卡二| 国产乱淫a∨片免费观看| 欧美一区二区三区在线观看| 成 人片 黄 色 大 片| 欧美精品一区二区久久婷婷 | 91丨porny丨最新| www.99热| 亚洲精品免费电影| 精品在线视频免费| 一本一本大道香蕉久在线精品| 日韩久久久久久久久久| 7777精品伊人久久久大香线蕉的 | 国产91免费看片| 日韩三级一区| 国产视频在线观看一区| 国产一区二区三区四区五区传媒| 亚洲在线视频一区二区| 欧美久久九九| 超碰97人人射妻| 激情偷乱视频一区二区三区| 少妇搡bbbb搡bbb搡打电话| 久久综合久久综合九色| 午夜激情福利电影| 婷婷中文字幕综合| 亚洲天堂视频网| 亚洲成人xxx| 日本www在线观看视频| 久久久久亚洲精品国产| 成人免费av电影| 超碰97在线播放| 成人免费电影网址| 亚洲一区二区三区av无码| 日本最新不卡在线| 丰满少妇xbxb毛片日本| 中文成人综合网| 日本少妇毛茸茸高潮| 欧美三级日韩三级| 三级国产在线观看| 欧美激情手机在线视频| 日韩精品麻豆| 国内外成人免费视频| 91精品综合久久久久久久久久久 | 亚洲日本韩国在线| 4hu四虎永久在线影院成人| 青青草在线播放| 久久99热精品| 亚洲精品成人一区| 欧美一区二区三区在线免费观看| 欧美激情五月| 日本免费色视频| 国产亚洲欧美日韩日本| 国产无精乱码一区二区三区| 欧美高清视频不卡网| 成人在线免费观看| 欧美尤物巨大精品爽| 国产精品极品在线观看| 中国成人在线视频| 欧美aaaaaa午夜精品| jizz日本免费| 亚洲成av人片| 丰满肉肉bbwwbbww| 欧美国产日韩在线| 国产日韩在线观看视频| 亚洲国产精品一区在线观看不卡| 中日韩男男gay无套| 激情av中文字幕| 亚洲欧美日韩国产手机在线| 91禁在线观看| 色阁综合伊人av| 成人免费毛片嘿嘿连载视频…| 欧美日韩国产综合视频在线| 一本久道久久久| 亚洲啪av永久无码精品放毛片| 亚洲欧美日韩久久精品| 国产男女裸体做爰爽爽| 三级精品视频久久久久| 国产亚洲人成a在线v网站| 日本高清视频一区二区三区 | 国产精品久久不能| 精品国产99| 中文字幕有码av| 国产精品―色哟哟| 亚洲天堂aaa| 久久婷婷国产麻豆91天堂| www999久久| 欧美国产视频一区| 国产.欧美.日韩| 亚洲国产精一区二区三区性色| 欧美精品一区二区三区蜜桃| 免费不卡av| 美国av一区二区三区| 久久国产直播| 二区三区四区视频| 日韩一区和二区| 国产美女一区视频| 久久精品国产第一区二区三区最新章节 | 日本又骚又刺激的视频在线观看| 91精品国产精品| 少妇精品久久久| 国产无遮挡猛进猛出免费软件| 亚洲欧洲三级电影| 午夜精品久久久久久久99| 国内成人精品视频| 亚洲三级精品| 伊人国产在线视频| 一区二区视频在线| 日漫免费在线观看网站| 国产精品视频导航| 欧美精品国产一区| 黄色国产在线观看| 欧美三电影在线| 欧洲成人综合网| 欧洲精品一区色| 国产一区欧美一区| 欧美成人精品欧美一级乱黄| 亚洲欧洲xxxx| 91麻豆精品国产综合久久久| 久久99久久99精品| 国产日韩欧美激情| 性网爆门事件集合av| 人九九综合九九宗合| 国产精品久久久久久| 久久久久9999| 51精品国自产在线| 筱崎爱全乳无删减在线观看| 日韩av一区二区三区在线 | 999视频在线免费观看| 日韩午夜黄色| 成人涩涩小片视频日本| 日韩精品免费在线观看| 亚洲成人1区| 精品视频无码一区二区三区| 亚洲黄色av一区| 黄色大片在线看| 99九九视频| 麻豆久久一区二区| 天天综合网入口| 欧美另类高清videos|