Best-Practices
如何診斷丟包?
我意識到這是非常主觀的並且取決於許多變數,但我想知道大多數人在需要診斷給定係統上的封包遺失時會經歷哪些步驟?
我是一名網路工程師,所以我將從我的角度來描述這一點。
對我來說,診斷封包遺失通常從“它執行得不太好”開始。從那裡,我通常會嘗試找到盡可能靠近通信兩端的套件(通常是辦公室中的工作站和某處的伺服器)並 ping 盡可能靠近另一端(理想情況下是“遠端端點”,但有時我無法通過防火牆發送 ping,因此必須在路由器上使用 LAN 介面),看看我是否能看到任何失去。
如果我能看到失去,這通常是“頻寬不足”或“連結有問題”介於兩者之間的情況,所以找到通過網路的路由並從中間開始,這通常會給你一個結束或另一個。
如果我看不到失去,接下來的兩個步驟往往是“發送更多 ping”或“發送更大的 ping”。如果這不能說明問題是什麼,那麼是時候開始查看端點之間的整個路徑的 QoS 策略和介面統計資訊了。
如果這沒有找到任何東西,那麼是時候開始質疑您的假設了,您是否真的遭受丟包的困擾。唯一確定的發現方法是在兩端同時擷取,或者通過在主機上使用 WireShark(或等效)或通過網路分接頭連接嗅探機(可能使用 WireShark 或類似設備)。然後是比較兩個數據包擷取的樂趣……
有時,被歸為“丟包”的原因僅僅是伺服器端的速度明顯變慢(例如,將數據庫從“在同一個 LAN 上”移動到“20 毫秒外”,並使用需要大量在前端和數據庫之間來回切換)。