[TCP Retransmission]連接問題

這兩天遇到一個奇怪的TCP連接超時問題:
org.apache.http.conn.ConnectTimeoutException: Connect to xxxxxx.com:80 [xxxxxxx.com/122.2.334.233] failed: connect timed out

咋一看,這就是網絡不通呀!但是ping測試和Telnet測試都沒問題,而且time out是偶發的,這就奇怪了,難道是網絡抖動?
又看了眼網絡監控,出口沒有任何丟包,那就只能在服務器上面抓包分析了:
[TCP Retransmission]連接問題
通過上面抓出來包,發現出現連接超時的時候有大量的[TCP Retransmission]連接,說明是服務端沒有回包呀!爲什麼沒有回包呢?遂上網查了一下,發現有一種情況跟我們很類似,我們使用的是阿里雲的VPC網絡,客戶端有三臺都是走的同一個IP的NAT網關出公網,數據包通過NAT網關後源IP會變成NAT地址,如果服務端開啓了net.ipv4.tcp_tw_recycle=1(tcp快速回收),數據包到達服務端後發出的TPC/IP時間戳不連續,服務端就會識別錯亂丟棄連接;
之後詢問了服務端的人員,果然是這個原因!修改後就好了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章