Networking

HTTP 請求的 TCP 段順序錯誤

  • June 20, 2012

我的 Web 服務伺服器有時不會收到正確的 HTTP 請求並返回“500 - 內部伺服器錯誤”。在伺服器上使用tcpdumpWireshark,我發現 HTTP 請求被拆分為 2 個 TCP 數據包,並且有時,伺服器會在第二個數據包到達之前嘗試處理請求。

此wireshark 擷取已在伺服器端進行。

所以我看到的是:

  • HTTP 請求的第一個片段在54.659
  • 再次收到71.168
  • 請求的第二個(也是最後一個)片段在99.869(即第一個片段之後的 45 秒)收到
  • 在 4 毫秒前,99.865伺服器超時並試圖處理一個不完整的請求(這會給出 500 錯誤)

我不知道現在該往哪裡看。我會說這是一個網路問題,但我有幾個 TCP 流,伺服器嘗試在請求完全接收前幾毫秒處理請求。另一方面,需要 45 秒以上才能到達的 TCP 數據包意味著網路非常糟糕。

您對如何進行更多調查有任何指示嗎?

我現在不知道在哪裡看

無處。嚴重地。

發生。

帽子在第一個之後 45 秒

那是休。嚴重地。歐洲到美國的網際網路延遲約為 150 毫秒。你是那個的 30 倍 - 這是一個沒有重新發送的下降。可悲的是,除非您控制雙方(!),否則您無法控制客戶端的行為。這樣的事情會發生。

如果那是您的區域網路-那真是太糟糕了。這就是網際網路,就是這樣。主要問題是它有多糟糕 - 如果它是“數千個連接”,那麼另一端可能是一個嚴重的網路問題。如果幾乎每個人有時都會發生這種情況,那麼它離您更近(連接、數據中心等)。例如,昨天我們在這裡遇到了這樣的情況——一些愚蠢的 *** DDOS 是我的連結之一。嚴重的擁塞可能導致數據包幾乎無法通過。但如果那不是你——你無能為力。

這就像某人參加會議時來不及告訴你他遇到了嚴重的交通擁堵。除非果醬在您的街道上,否則您無法知道。網際網路有時會在一些非常糟糕的地方出現。

引用自:https://serverfault.com/questions/400491