iPerf3 带宽性能测试教程
iPerf3 是网络性能测试领域的标准工具,可以精确测量两个端点之间的 TCP 和 UDP 带宽、延迟、抖动和丢包率。与 Speedtest 不同,iPerf3 需要在两端分别运行服务端和客户端,因此可以测试任意两个节点之间的实际网络性能。它是网络工程师和运维人员评估网络质量的首选工具,在搬瓦工 VPS 的性能评测中也经常使用。
一、安装 iPerf3
1.1 在 Ubuntu/Debian 上安装
apt update
apt install iperf3 -y
iperf3 --version
1.2 在 CentOS/RHEL 上安装
yum install iperf3 -y
二、基本使用方法
iPerf3 采用客户端/服务端(C/S)架构,需要在两台机器上分别运行。
2.1 启动服务端
# 在服务端启动 iPerf3(默认监听 5201 端口)
iperf3 -s
# 后台运行
iperf3 -s -D
# 指定端口
iperf3 -s -p 5300
# 绑定特定 IP
iperf3 -s -B 0.0.0.0 -p 5201
2.2 客户端连接测试
# TCP 带宽测试(默认 10 秒)
iperf3 -c 服务端IP
# 指定测试时间为 30 秒
iperf3 -c 服务端IP -t 30
# 指定端口
iperf3 -c 服务端IP -p 5300
三、TCP 带宽测试
3.1 多线程并发测试
# 使用 4 个并发连接测试
iperf3 -c 服务端IP -P 4 -t 30
# 使用 10 个并发连接
iperf3 -c 服务端IP -P 10 -t 30
3.2 反向测试(测试下载速度)
# 默认测试的是上传方向
# -R 参数反转方向,测试下载速度
iperf3 -c 服务端IP -R -t 30
3.3 双向测试
# 同时测试上传和下载
iperf3 -c 服务端IP --bidir -t 30
3.4 设置窗口大小
# 设置 TCP 窗口大小为 512KB
iperf3 -c 服务端IP -w 512K -t 30
# 设置更大的窗口用于高延迟链路
iperf3 -c 服务端IP -w 4M -t 30
四、UDP 带宽测试
4.1 基本 UDP 测试
# UDP 测试(默认发送速率 1Mbps)
iperf3 -c 服务端IP -u -t 30
# 设置目标发送速率为 100Mbps
iperf3 -c 服务端IP -u -b 100M -t 30
# 设置为不限速
iperf3 -c 服务端IP -u -b 0 -t 30
4.2 测试抖动和丢包
# UDP 测试会自动报告抖动(jitter)和丢包率
iperf3 -c 服务端IP -u -b 50M -t 30
# 输出示例中关注以下指标:
# Jitter: 0.050 ms (抖动,越小越好)
# Lost/Total: 0/35000 (0%) (丢包率,越低越好)
五、高级功能
5.1 JSON 格式输出
# 输出 JSON 格式
iperf3 -c 服务端IP -t 30 -J > result.json
# 使用 jq 提取关键数据
jq '.end.sum_sent | {bits_per_second, bytes}' result.json
5.2 间隔报告
# 每 2 秒报告一次实时数据
iperf3 -c 服务端IP -t 60 -i 2
5.3 限制带宽
# TCP 限速测试
iperf3 -c 服务端IP -b 50M -t 30
# 指定发送缓冲区大小
iperf3 -c 服务端IP -l 128K -t 30
5.4 零拷贝模式
# 使用 sendfile 系统调用(减少 CPU 开销)
iperf3 -c 服务端IP -Z -t 30
六、使用公共 iPerf3 服务器
如果没有第二台服务器,可以使用公共的 iPerf3 测试节点:
# 常用公共 iPerf3 服务器
iperf3 -c iperf.he.net -t 10
iperf3 -c bouygues.iperf.fr -t 10
iperf3 -c speedtest.uztelecom.uz -t 10
# 测试到不同地区
iperf3 -c iperf.par2.as49434.net -t 10 # 巴黎
iperf3 -c iperf.biznetnetworks.com -t 10 # 雅加达
七、防火墙配置
# 如果使用 iptables
iptables -A INPUT -p tcp --dport 5201 -j ACCEPT
# 如果使用 ufw
ufw allow 5201/tcp
# 如果使用 firewalld
firewall-cmd --permanent --add-port=5201/tcp
firewall-cmd --reload
八、多节点自动测试脚本
#!/bin/bash
echo "===== iPerf3 多节点带宽测试 ====="
echo "测试时间: $(date)"
echo ""
# 公共 iPerf3 服务器列表
SERVERS=(
"iperf.he.net:美国"
"bouygues.iperf.fr:法国"
"speedtest.uztelecom.uz:乌兹别克"
)
for entry in "${SERVERS[@]}"; do
SERVER=$(echo $entry | cut -d: -f1)
LOCATION=$(echo $entry | cut -d: -f2)
echo "--- 测试到 ${LOCATION}(${SERVER})---"
echo "上传方向:"
iperf3 -c $SERVER -t 10 2>/dev/null | grep "sender" | tail -1
echo "下载方向:"
iperf3 -c $SERVER -t 10 -R 2>/dev/null | grep "receiver" | tail -1
echo ""
done
九、常见问题
9.1 连接被拒绝
检查服务端是否正在运行、端口是否正确、防火墙是否放行了对应端口。
9.2 测试结果与预期差距大
高延迟链路需要增大 TCP 窗口大小才能充分利用带宽。使用 -w 参数设置窗口大小,或使用多个并发连接(-P)。
9.3 服务端busy错误
# iPerf3 服务端一次只接受一个客户端
# 使用 --one-off 模式在每次测试后重启
iperf3 -s --one-off
总结
iPerf3 是网络带宽测试最精确的工具,适合在两台服务器之间进行点对点的性能评估。配合 Speedtest CLI 可以全面了解 VPS 的网络性能。如果需要长期监控网络质量,可以参考 SmokePing 延迟监控教程。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的优惠,通过 bwh81.net 进入官网购买。