Networking
在這種情況下是什麼導致問題(可能是丟包)
我正在嘗試診斷與網路相關的問題 - 請在提出答案之前了解這些要點(如果需要更多資訊,我會添加任何人們提出的問題)。
- 我們有一個僅伺服器網路(5 個應用程序伺服器、4 個 db 伺服器、少數其他伺服器),似乎在伺服器之間出現封包遺失
- 我可以在 Wireshare 上看到這種情況——有很多 TCP 重傳、TCP_Out-of-Order、TCP DupACK,我認為也有一些 TCP_ZeroWindow 數據包。
- IP 協議上似乎有很多錯誤校驗和
- 我認為由於這種丟包導致的額外重試,網路適配器的負載非常恒定且很高(90-100%)
- 隨著該網路上的外部請求增加(對應用伺服器),網路性能下降
- 應用伺服器在被外部請求使用時會產生自己的流量
- 外部請求來自核心路由器,網路在它自己的網段上
- 這種高負載“神奇地”在 1-2 天后消失了,我神奇地說,因為我們只在負載下降時監控適配器,但仍然在wireshark 中顯示丟包,儘管數量較少。
- 沒有任何跡象表明伺服器受到了損害。
- 不幸的是,我們無法物理訪問任何硬體
- 我們不能中斷目前的服務
鑑於上述情況,確定導致封包遺失的原因的最佳方法是什麼(我們希望它是託管交換機)。
是否有任何軟體可以為我們提供導致問題的經驗證據?
提前致謝
根據我的經驗,Wireshark 可能會在使用硬體 TCP-Offload 的介面上返回不可靠的結果。重複的數據包是其症狀之一。
也就是說,如果您使用跨度/鏡像埠來抓取您的擷取,線上路上的重複確認是一個重大問題。
重複的 ACK、無序和重傳是 TCP 堆棧在某些東西上的行為不正確的信號。關聯哪些網路節點容易引發錯誤將有助於隔離哪些主機需要進一步調查。跨度/鏡像埠擷取和該特定節點上的wireshark會話之間的網路擷取的任何差異都應該有助於突出它可能發生的問題。如果您看到一些,請調查更新網路驅動程序,因為這些驅動程序通常是解決此類問題的最簡單方法(Broadcom 為此而臭名昭著)。其次,更新 NIC 的韌體也有幫助。
如果那裡的一切看起來都很健康,那麼您可能只是看到 TCP 在處理太多流量時所做的正常工作。
TCP 零視窗也是 TCP/IP 堆棧不健康的標誌,但根據我的經驗,有時會在兩個不同的 TCP/IP 堆棧無法相處時發生。例如,Windows 2008 和 Linux 空間中某些較舊的 TCP/IP 堆棧可能會發生這種情況。