connect timed out問(wèn)題排查

最近觀察到日志上偶現(xiàn)一個(gè)錯(cuò)誤:

feign.RetryableException: connect timed out executing POST http://service_name/a/b
java.net.SocketTimeoutException: connect timed out

該問(wèn)題很清晰,就是發(fā)起http請(qǐng)求時(shí),構(gòu)建TCP連接時(shí)發(fā)生了超時(shí)問(wèn)題。

由于是偶現(xiàn)的,頻率不高所以一開(kāi)始沒(méi)有足夠重視,直到上了k8s之后頻率頗高。一開(kāi)始沒(méi)有把這個(gè)問(wèn)題聚焦到配置ribbon.ConnectionTimeout參數(shù)上,因?yàn)槟J(rèn)使用的統(tǒng)一配置,沒(méi)成想居然這里有個(gè)小坑。

為了排查該問(wèn)題,我找到運(yùn)維同學(xué)在生產(chǎn)環(huán)境低峰期通過(guò)tcpdump命令進(jìn)行抓包,參考命令如下:tcpdump -i eth0 dst host \( ....(IP地址).. \) and port 5000 -w /root/connect_timeout.cap &,由于是偶現(xiàn)的問(wèn)題,所以抓包過(guò)程時(shí)間較長(zhǎng),所幸在低峰期出現(xiàn)了一次。在幾百兆的里找哪些有問(wèn)題的包,確實(shí)不好找。

好在我們異常調(diào)用棧了打印了案發(fā)現(xiàn)場(chǎng)的時(shí)間:2021-07-05 09:20:35.954 ERROR 1 --- [nio-5000-exec-3]

使用wireshake前,我調(diào)整了兩個(gè)配置項(xiàng):
1、修改View -> Time Diaplay Formate,選擇Date and Time of Day
2、修改Preferences -> Protocols -> TCP,去掉Relative sequence number

通過(guò)時(shí)間找到了兩個(gè)非常可疑的包,如下:


image.png

為何說(shuō)這兩個(gè)包可疑:

1、它的時(shí)間跟異常調(diào)用棧的時(shí)間很接近,一秒左右的時(shí)間。
2、它只有SYN包,其他包沒(méi)有,一個(gè)正常的http請(qǐng)求必須是完整的三次握手在前。
3、它向服務(wù)方發(fā)送了RST包。

胡思亂想:

1、在34秒的時(shí)候發(fā)出SYN包,之后等待服務(wù)端響應(yīng)ACK
2、在1秒后由于沒(méi)有收到ACK包,所以響應(yīng)了ConnectinTimeout超時(shí)?要滿足這里,應(yīng)用程序需要將ConnectinTimeout設(shè)置為1秒
3、在超時(shí)異常后,客戶端終止了本次TCP連接的建立,但是此時(shí)收到了服務(wù)端的ACK包。(由于運(yùn)維同學(xué)的命令寫的有問(wèn)題,導(dǎo)致沒(méi)有把服務(wù)端的ACK包抓下來(lái),去掉dst即可)
4、客戶端收到這個(gè)包之后,由TCP協(xié)議棧回復(fù)了服務(wù)端一個(gè)RST包終止連接的建立。

那么ConnectinTimeout導(dǎo)致配置了多少?程序上找了半天也沒(méi)有找到相關(guān)的配置,只找到一個(gè)配置項(xiàng)如下ribbon.ReadTimeout: 2000,那么默認(rèn)的ConnectinTimeout是多少?沒(méi)成想居然真的是1s,如下圖:

image.png

猜測(cè)

ConnectinTimeout上調(diào)5s將會(huì)出現(xiàn)什么情況? 理論上在建立TCP連接時(shí)發(fā)送SYN將會(huì)由于超時(shí)而重復(fù)發(fā)送,重試次數(shù)配置參數(shù)為net.ipv4.tcp_syn_retries,我們的機(jī)器默認(rèn)是6,而重試的是具備時(shí)間間隔的,大致為【1,3,7,15,31,63】,間隔為s。

  • 所以如果SYN持續(xù)丟包,最多將會(huì)見(jiàn)到6個(gè)TCP Retransmission
  • 綜合當(dāng)前的情況來(lái)看,可能會(huì)在1s, 之后收到來(lái)自服務(wù)端的ACK包,此時(shí)即可完成連接的建立,
  • 如果未收到則大概會(huì)在第二次發(fā)出重復(fù)SYN包后超時(shí),之后再收到服務(wù)端ACK將會(huì)回復(fù)RST

最終我將ConnectiTimeout調(diào)整為3s,這兩天抓包觀察,偶爾可以看到一個(gè)重發(fā)的syn包,與猜測(cè)基本一致。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評(píng)論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 178,980評(píng)論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 64,064評(píng)論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評(píng)論 6 414
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 56,109評(píng)論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 43,287評(píng)論 0 291
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評(píng)論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評(píng)論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 35,327評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 36,667評(píng)論 1 296
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容