压力测试
约 771 字大约 3 分钟
2026-04-09
背景
在实际工作中,经常需要验证服务器的网络交付能力。例如,当租赁服务商声称某台服务器能承受 5 Gbps 的带宽请求时,我们需要通过实际测试来验证这个说法。
这个过程通常被称为压力测试或打流。其核心目标是向测试服务器发送大量的网络请求,统计其性能指标(如吞吐量、丢包率和重传率)来评估实际的网络能力。
基本原理
要进行有效的压力测试,需要:
- 发送端:向接收端持续发送网络数据包
- 接收端:接收数据包并进行统计
整个测试过程中,发送端会计算每秒传输的数据量(单位:Gbps)。
为什么要使用两台机器?
iperf3 遵循"接力赛"模式,要求一个发送端(Client)和一个接收端(Server):
- 误区:在单台机器上自测(如对 127.0.0.1 测试),只能反映该机器的内存交换速度和 CPU 性能,与实际网络传输能力无关
- 正确做法:流量必须从发送端的网卡流出,经过交换机、路由器等网络设备,最后进入接收端的网卡。只有这样才能真实反映链路的网络传输能力
关键考虑因素
IP 选择的重要性
压测的物理路径直接决定了应该选择哪个 IP。根据不同的测试场景,IP 的选择会产生完全不同的测试结果:
1. 公网 IP 压测
流量会经过 互联网交换中心)、互联网骨干网、防火墙、DDoS 清洗中心等多个节点,最后才能到达目标。任何一个节点的限速或丢包都会影响测试结果,因此无法准确反映实际的链路带宽。
2. 内网(Peering)IP 压测
流量直接从发送端的交换机,经过内网链路(如机房内的光纤),无需经过防火墙和公网,直接进入接收端的交换机。这种方式提供最纯净的测试环境,能够准确反映硬件(如 100G-LR4 模块和光纤)的真实性能。
测试配置
推荐方案:在同一机房、同一交换机(VLAN)下找一台配置相同的服务器(最好均为 100G 网卡)作为测试对端。
命令示例
iperf3 -c [目标IP] -t 60 -P 10-c [目标IP]:连接到目标服务器的 IP 地址-t 60:持续发送数据 60 秒-P 10:开启 10 个并发连接线程
重要提示
虽然操作流程很简单,但有两个必须注意的事项:
- 确保使用内网 IP 测试:只能在内网环境进行压力测试。使用公网 IP 测试极易被误认为是 DDoS 攻击
- 避免浪费公网带宽:从公网打出 10 Gbps 的流量成本非常高昂,不亚于实施真正的网络攻击
