iPerf3 VPS 网络测速教程:上下行、并发与结果解读
iPerf3 用来主动测量两台主机之间可达到的网络吞吐。 它需要一台主机运行服务端,另一台运行客户端。结果只反映这条路径在本次测试条件下的表现,无法代表网站速度或机房的长期带宽。
旧版 iPerf 命令已替换为 iPerf3。根据 ESnet 官方说明,iPerf3 是独立重写版本,与 iPerf2 不兼容;两端应使用同一工具和相近版本。
测试前准备
准备两台你有权使用的服务器,并确认它们之间允许测试流量。不要把公开网站、测速下载地址或不属于你的 IP 当作 iPerf3 服务端。
默认服务端监听 TCP 5201。测试期间只向客户端公网 IP 放行该端口,结束后关闭规则,避免长期暴露一个无需认证的测速服务。
测试前同时记录以下条件:
- 服务端和客户端的机房、运营商与公网 IP
- 测试日期、时段和持续时间
- iPerf3 版本、协议、并发数和目标速率
- 两端 CPU 使用率,以及是否同时有业务流量
安装 iPerf3
Debian 或 Ubuntu:
sudo apt update
sudo apt install -y iperf3
Rocky Linux、AlmaLinux 或当前 RHEL 系列:
sudo dnf install -y iperf3
安装后在两端确认版本:
iperf3 --version
软件包由各发行版维护。ESnet 的获取 iPerf3 说明列出了常见平台,但具体包版本以系统仓库为准。
启动服务端
在服务端运行:
iperf3 -s
需要指定其他端口时,两端都加 -p。以下示例把端口改为 5202:
iperf3 -s -p 5202
前台测试结束后按 Ctrl+C 退出。若必须后台运行,应同时设置访问控制、日志和明确的停止时间,不要把 iPerf3 当作长期公开服务。
测正向与反向 TCP 吞吐
在客户端把 198.51.100.5 替换为自己的服务端 IP:
iperf3 -c 198.51.100.5 -t 30
默认方向是客户端发送、服务端接收。测试反向,也就是服务端发送、客户端接收:
iperf3 -c 198.51.100.5 -t 30 -R
单连接结果偏低时,可以用有限并发检查这条路径是否受单流窗口或单核处理限制:
iperf3 -c 198.51.100.5 -t 30 -P 4
并发流增加后,应用未必更快。报告结果时应同时保留单流和并发测试,并说明两组数据的差异。
谨慎测试 UDP
UDP 测试需要显式设定发送速率。先从明显低于预期上限的速率开始,避免主动制造拥塞:
iperf3 -c 198.51.100.5 -u -b 50M -t 30
逐步提高 -b 后,观察丢包率、抖动和实际接收速率。未经授权不要对第三方地址做 UDP 压力测试,也不要在生产高峰直接冲到端口上限。
保存机器可读结果
需要比较多个时段或机房时,使用 JSON 输出并连同测试条件一起保存:
iperf3 -c 198.51.100.5 -t 30 -J
JSON 适合后续提取发送端、接收端、重传和 CPU 信息。只保存最终带宽数字会丢失判断异常所需的上下文。
怎样解读结果
| 现象 | 可能原因 | 下一步 |
|---|---|---|
| 正向低、反向正常 | 两个方向的路由、限速或拥塞不同 | 交换两端并复测,结合路径检查 |
| 单流低、并发明显提高 | 单流窗口、时延或单核处理可能受限 | 保留两组数据,再按真实应用并发评估 |
| UDP 丢包随目标速率上升 | 路径已接近容量或存在队列拥塞 | 降低目标速率,分时段复测 |
| 吞吐波动且 CPU 接近满载 | 主机处理成为瓶颈 | 换更空闲时段或更高规格测试端 |
| iPerf3 很高但网站仍慢 | DNS、TLS、应用或数据库耗时 | 测真实 HTTP 请求,不继续堆并发流 |
iPerf3 测的是端到端吞吐,ping 主要看往返延迟,MTR用于观察路径与持续丢包。三者回答的问题不同,应结合使用。
用于 VPS 机房选择时的顺序
- 从机房列表选择靠近主要用户的候选节点。
- 先测真实页面或 API,再用 ping 与 MTR 定位网络层差异。
- 只有在你控制两端主机时,再用 iPerf3 比较正向、反向和并发吞吐。
- 高峰、低峰各复测,并保留原始结果;一次测速不能形成长期线路承诺。
完整参数以 ESnet 的 iPerf3 命令手册为准。