在 Ubuntu 上用抓包工具识别网络拥塞的思路
快速判断拥塞的命令行流程
步骤1 先看接口是否接近带宽上限
使用iftop观察实时带宽占用,若长期接近接口的最大物理带宽(例如 1 Gbps 链路持续在 900+ Mbps),高概率是链路拥塞。
命令示例:sudo iftop -i eth0(按 n 关闭 DNS 解析以减少额外负载)。
步骤2 定位“谁”在吃带宽
用nethogs按进程查看带宽占用,快速识别异常进程或突增连接。
命令示例:sudo nethogs eth0。
步骤3 抓包验证是否存在丢包与重传
用tcpdump短时抓包并保存到文件,后续用 Wireshark 分析。
命令示例:sudo tcpdump -i eth0 -w capture.pcap
在 Wireshark 中查看:
步骤4 持续流量画像与历史对比
用vnstat记录长期流量,配合实时工具判断拥塞是偶发还是持续。
命令示例:vnstat -l -i eth0(实时),vnstat(历史统计)。
Wireshark 拥塞判定要点
高效抓包与分析的小技巧
常见现象与处置建议
现象:iftop 显示带宽长期接近物理上限,Wireshark 见到大量重传与 RTT 抖动。
处置:优先扩容链路或做流量整形/限速;在关键业务上启用QoS;优化应用并发与发送窗口策略。
现象:抓包发现大量 Zero Window,但本机带宽未满。
处置:瓶颈多在接收端/中间设备处理能力或窗口配置,检查接收端应用与系统(如 socket 缓冲、内核参数),必要时优化或分流。
现象:nethogs 显示某进程突发占满带宽。
处置:对该进程做限流/调度或优化其传输逻辑(批量、压缩、并发控制)。