iPerf3 VPS 网络测速教程:上下行、并发与结果解读

· 更新于 · 发布:iVPSer · Linux教程

iPerf3 用来主动测量两台主机之间可达到的网络吞吐。 它需要一台主机运行服务端,另一台运行客户端。结果只反映这条路径在本次测试条件下的表现,无法代表网站速度或机房的长期带宽。

旧版 iPerf 命令已替换为 iPerf3。根据 ESnet 官方说明,iPerf3 是独立重写版本,与 iPerf2 不兼容;两端应使用同一工具和相近版本。

测试前准备

准备两台你有权使用的服务器,并确认它们之间允许测试流量。不要把公开网站、测速下载地址或不属于你的 IP 当作 iPerf3 服务端。

默认服务端监听 TCP 5201。测试期间只向客户端公网 IP 放行该端口,结束后关闭规则,避免长期暴露一个无需认证的测速服务。

测试前同时记录以下条件:

安装 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 机房选择时的顺序

  1. 机房列表选择靠近主要用户的候选节点。
  2. 先测真实页面或 API,再用 ping 与 MTR 定位网络层差异。
  3. 只有在你控制两端主机时,再用 iPerf3 比较正向、反向和并发吞吐。
  4. 高峰、低峰各复测,并保留原始结果;一次测速不能形成长期线路承诺。

完整参数以 ESnet 的 iPerf3 命令手册为准。