网络栈调优98 条

iperf3 TCP 吞吐测量

端到端吞吐基线工具: 服务端常驻, 客户端发起, 多流并行与双向模式覆盖不同场景。

iperf3 的 TCP 模式

iperf3 是端到端吞吐测量的标准工具:服务端常驻监听,客户端发起连接并持续发送数据,测量这段路径上实际能达到的吞吐。单流测的是单连接能力,链路或网卡的并行能力要靠多流并行才能探到。它给出的是应用可见的端到端吞吐,如果结果不理想,还要结合丢包与重传分析原因。

基本信息

服务端iperf3 -s 常驻监听,默认端口 5201
客户端iperf3 -c 10.0.0.2 -t 30 -P 4
反向测试-R,由服务端向客户端发送,测下行收速
时长-t 指定秒数,默认 10 秒
输出要点吞吐、重传次数、发送与接收两端结果

典型使用场景

  • 新链路或新机房上线前的带宽验收
  • 网络变更后对比吞吐是否达到预期
  • 排查应用吞吐上不去:确认瓶颈是否为链路本身
  • 多流并行验证交换与网卡能否达到标称能力
  • 反向测试确认两个方向的速率差异

最小用法

最小用法
# 服务端
# iperf3 -s
# 客户端
iperf3 -c 10.0.0.2 -t 30 -P 4      # 4 条并行流,持续 30 秒
iperf3 -c 10.0.0.2 -t 15 -R        # 反向测试,观察下行速率
iperf3 -c 10.0.0.2 -t 30 -P 1 -w 256K  # 指定单流并调整窗口,观察单流上限

关键参数

参数作用使用建议
-t测试持续时长(秒)默认 10 秒偏短,验收建议 30 秒以上
-P并行流数单流测不出链路上限时提高
-R反向测试确认下行方向的收速
-w套接字缓冲区单流受限时可评估窗口影响
-p服务端端口需要避开占用端口时指定

测试设计

  • 单流定基线,多流探上限,两个结果分开展示
  • 避开业务高峰,并记录测试窗口与参数,便于复现
  • 两端都记录结果:客户端输出重传,服务端确认实收
  • 测试前确认路径上没有其他大流量任务在跑
多流并行能提升总吞吐,说明瓶颈在单连接侧(例如窗口或主机处理能力);多流与单流结果接近且远低于链路标称值,瓶颈更可能在链路或中间设备。
吞吐不达标时不要急于调整内核参数,先确认对端是否同样配置了合适参数,以及路径上是否存在限速策略或中间设备的能力上限。

易错点

  • 在业务高峰做吞吐压测,影响真实流量且结果被干扰
  • 只测单流就断言链路带宽上限,误判为设备能力不足
  • 测试时长过短,结果被 TCP 慢启动阶段主导
  • 只在一个方向测试,忽略了下行方向可能存在的限制

数据来源与参考

  • iperf3 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌