用 Dumpcap 进行网络性能分析
一、核心思路与指标
- Dumpcap 是 Wireshark 的命令行抓包引擎,职责是高性能地把网络流量写入文件;性能分析通常在抓包后用 Wireshark/tshark 对指标进行统计与可视化。抓包阶段建议仅做最小化过滤以减少开销。常用性能指标包括:吞吐量(bps)、时延(RTT/ACK 往返)、丢包/重传、TCP 窗口与零窗口、重传原因(超时/快速重传)、连接建立与关闭行为(SYN/SYN-ACK/ACK、FIN/RST)。
二、安装与权限配置
- 在 Debian/Ubuntu 上安装:sudo apt update && sudo apt install wireshark(包含 dumpcap)。
- 权限与安全:
- 将用户加入 wireshark 组:sudo usermod -aG wireshark $USER,然后重新登录;或
- 给二进制授予能力:sudo setcap ‘CAP_NET_RAW+eip CAP_NET_ADMIN+eip’ /usr/bin/dumpcap。
- 长时抓包建议提升文件描述符限制:sudo ulimit -n 65535,或在 /etc/security/limits.conf 中设置 soft/hard nofile 为 65535。
三、捕获命令模板与关键参数
- 选择接口:dumpcap -D 查看接口列表;性能分析常用 -i any(所有接口)或指定如 eth0。
- 写入文件与切包:使用 -w file 写盘,配合环形切包 -b filesize:N -b files:M 控制磁盘占用与滚动保留。
- 捕获过滤(BPF):用 -f 限制只抓与分析目标相关的流量(如仅某 IP/端口),显著降低丢包与 I/O。
- 快照长度:用 -s 0 抓取完整帧(便于精确时延/重传分析);若只关心头部,可减小 snaplen。
- 环形缓冲与性能:适当增大内核/驱动环形缓冲(如 ethtool -G),并用 -B 调整 dumpcap 捕获缓冲,减少高负载丢包。
- 常用模板(按需组合):
- 全接口短时抓包:dumpcap -i any -w perf.pcapng -s 0 -c 100000
- 指定接口并环形切包:dumpcap -i eth0 -w perf.pcapng -s 0 -b filesize:100000 -b files:20
- 定向业务流量:dumpcap -i eth0 -w app.pcapng -s 0 -f ‘tcp port 8080’
- 实时查看(行缓冲):dumpcap -i eth0 -l | tshark -r -
- 提示:过滤器字符串含空格或特殊字符时,用单引号包裹,避免 Shell 解析错误。
四、用 Wireshark/tshark 计算性能指标
- 吞吐量(bps):Statistics → I/O Graphs,设置间隔 1 sec,查看 Line Graph 的 bps 曲线;或 tshark -r perf.pcapng -q -z io,stat,1,“SUM(frame.len)”。
- 时延与重传:
- RTT/ACK 往返:Statistics → TCP Stream Graphs → Round Trip Time,观察抖动与异常尖峰。
- 重传与快速重传:在 I/O Graphs 添加过滤 tcp.analysis.retransmission 与 tcp.analysis.fast_retransmission,对比主曲线定位问题时段。
- 零窗口与接收窗口:添加 tcp.window_size == 0 与 tcp.window_size,识别接收端拥塞/处理能力瓶颈。
- 丢包与乱序:关注 tcp.analysis.lost_segment、tcp.analysis.out_of_order,结合 Expert Info 汇总定位问题严重度。
- 连接行为:用显示过滤 tcp.flags.syn==1、tcp.flags.rst==1、tcp.flags.fin==1 统计握手/异常重置/关闭,配合 Conversations 与 Endpoints 看 Top 对话与端点分布。
五、性能优化与排错要点
- 降低丢包:
- 增大网卡 ring buffer(ethtool -G rx/tx),提升内核/驱动缓冲,配合 dumpcap -B 增大捕获缓冲。
- 使用 -s 0 抓全帧,避免二次抓包;用 -f 精准过滤,减少无关流量处理。
- 写盘尽量使用 SSD,并按时间/大小切包,避免单文件过大影响分析。
- 提升分析效率:
- 长时抓包用环形切包(-b filesize/files),分析阶段用 tshark 批量统计与导出,再在 Wireshark 中细查关键时段。
- 资源与稳定性:
- 提升 ulimit -n,避免“Too many open files”;必要时分接口/分目标并行抓包与分析。
- 合规与影响:
- 抓包涉及敏感数据,确保具备合法授权并遵守政策;生产环境谨慎操作,避免对业务造成额外负载。