Networking
HTTP 請求的 TCP 段順序錯誤
我的 Web 服務伺服器有時不會收到正確的 HTTP 請求並返回“500 - 內部伺服器錯誤”。在伺服器上使用
tcpdump
Wireshark,我發現 HTTP 請求被拆分為 2 個 TCP 數據包,並且有時,伺服器會在第二個數據包到達之前嘗試處理請求。此wireshark 擷取已在伺服器端進行。
所以我看到的是:
- HTTP 請求的第一個片段在
54.659
- 再次收到
71.168
- 請求的第二個(也是最後一個)片段在
99.869
(即第一個片段之後的 45 秒)收到- 在 4 毫秒前,
99.865
伺服器超時並試圖處理一個不完整的請求(這會給出 500 錯誤)我不知道現在該往哪裡看。我會說這是一個網路問題,但我有幾個 TCP 流,伺服器嘗試在請求完全接收前幾毫秒處理請求。另一方面,需要 45 秒以上才能到達的 TCP 數據包意味著網路非常糟糕。
您對如何進行更多調查有任何指示嗎?
我現在不知道在哪裡看
無處。嚴重地。
發生。
帽子在第一個之後 45 秒
那是休。嚴重地。歐洲到美國的網際網路延遲約為 150 毫秒。你是那個的 30 倍 - 這是一個沒有重新發送的下降。可悲的是,除非您控制雙方(!),否則您無法控制客戶端的行為。這樣的事情會發生。
如果那是您的區域網路-那真是太糟糕了。這就是網際網路,就是這樣。主要問題是它有多糟糕 - 如果它是“數千個連接”,那麼另一端可能是一個嚴重的網路問題。如果幾乎每個人有時都會發生這種情況,那麼它離您更近(連接、數據中心等)。例如,昨天我們在這裡遇到了這樣的情況——一些愚蠢的 *** DDOS 是我的連結之一。嚴重的擁塞可能導致數據包幾乎無法通過。但如果那不是你——你無能為力。
這就像某人參加會議時來不及告訴你他遇到了嚴重的交通擁堵。除非果醬在您的街道上,否則您無法知道。網際網路有時會在一些非常糟糕的地方出現。