iperf3测TCP最大带宽需分步控制变量:先单流验证链路,再-P多线程压测激发物理带宽,配合-t/-i延长采样获取稳定均值,最后-R反向测试并-w调优窗口以应对高延迟场景。

直接用 iperf3 测 TCP 最大带宽,关键不是“一键跑完”,而是分步控制变量、排除干扰、逼近真实上限。它不像网页测速那样点一下就出数,但结果可信得多。
TCP 基础单向测试(快速验证链路通断与粗略带宽)
这是起步动作,用于确认服务端可达、防火墙放行、基础路径是否正常:
- 在接收方(如服务器或另一台 Linux 主机)运行:
iperf3 -s - 在发送方执行:
iperf3 -c 192.168.1.100(把 IP 换成实际服务端地址) - 默认跑 10 秒,输出末尾的
[receiver]行中bits/sec值即为实测吞吐量
注意:该结果受单流 TCP 窗口、延迟、系统缓冲区限制,通常远低于千兆网卡标称值,仅作初步参考。
多线程并行压测(激发真实物理带宽)
现代网卡和 CPU 能同时处理多个 TCP 流,单线程测不出上限。加 -P 参数启用并行连接:
- 服务端保持
iperf3 -s不变 - 客户端改用:
iperf3 -c 192.168.1.100 -P 8(8 线程),或-P 16更激进 - 观察各线程速率是否接近均衡——若某线程明显偏低,可能暴露网卡队列不均、中断绑定偏斜或 NUMA 访存瓶颈
多数千兆局域网在 -P 4~-P 8 即可打满;万兆环境建议从 -P 16 起步。
延长测试时间 + 定时采样(获取稳定平均值)
默认 10 秒太短,易受瞬时抖动、缓存预热影响。加入 -t 和 -i 控制节奏:
-
iperf3 -c 192.168.1.100 -t 30 -i 2:总时长 30 秒,每 2 秒输出一行实时速率 - 最终汇总行(如
0.00-30.00 sec)的bits/sec是加权平均值,比首屏瞬时值更可靠 - 若中间某几秒速率骤降,可结合
sar -n DEV 1查看网卡收发包是否丢帧或中断飙升
反向测试与窗口调优(排查上行瓶颈与高延迟影响)
很多场景(如 NAS 上传、视频推流)依赖服务端主动发包。用 -R 切换方向,再配合窗口大小优化:
- 反向测试:
iperf3 -c 192.168.1.100 -R,看服务端发、客户端收的性能 - 若高延迟链路(如跨机房)带宽上不去,尝试增大 TCP 窗口:
-w 2M或-w 4M - 窗口理论值 ≈ 带宽(bps)× RTT(秒)÷ 8,例如 1Gbps × 20ms = 2.5MB,可设
-w 3M
不调窗口时,高延迟+高带宽组合常被误判为“带宽不足”,其实只是 TCP 等待 ACK 太久。











