本文目录导读:

对网络进行压力测试,通常关注的是吞吐量(带宽)、延迟(响应时间)、并发连接数以及丢包率,你需要针对不同的网络场景选择合适的工具。
以下是几种主流工具及其对应的压测方法:
核心工具及场景
iPerf3:最常用的带宽和吞吐量测试工具
这是压测“网络管道”有多粗的标配工具。
- 适用场景:测试两台机器之间TCP或UDP的最大带宽、丢包和抖动。
- 原理:一台作为服务器,一台作为客户端,持续发送数据流并统计结果。
- 操作方法:
- 在服务器端运行:
iperf3 -s(默认监听5201端口) - 在客户端运行(TCP压测):
iperf3 -c <服务器IP> -t 30 -P 10-t 30:持续30秒。-P 10:使用10个并行连接,模拟多线程填满带宽。
- UDP压测(模拟视频/语音流量):
iperf3 -c <服务器IP> -u -b 1000M -t 30-u:UDP模式。-b 1000M:尝试以1000Mbps的速率发包,观察实际接收速率和丢包率。
- 在服务器端运行:
hping3:高级的协议和并发压测
如果你需要模拟复杂的网络攻击或测试防火墙/路由器的抗压能力,hping3非常灵活。
- 适用场景:测试TCP SYN Flood(三次握手半开连接)、ICMP Flood、自定义协议栈压力。
- 操作方法:
- 测试并发连接数(向目标端口发送大量SYN包):
hping3 -S -p 80 --flood <目标IP>-S:发送SYN包(建立连接请求)。--flood:以最快速度发包。
- 测试网络层压力(发送大量大包):
hping3 -1 --flood -d 1400 <目标IP>-1:ICMP协议(ping包)。-d 1400:包大小1400字节。
- 测试并发连接数(向目标端口发送大量SYN包):
netperf:专业的吞吐量和延迟测试
与iperf3类似,但提供了更丰富的指标,如TCP连接建立/关闭速率、传输事务速率等。
- 适用场景:精准测量网络在不同负载下的表现。
- 操作方法:
- 服务器端:
netserver - 客户端TCP批量测试:
netperf -H <服务器IP> -l 60 - 客户端TCP请求/响应测试(模拟HTTP短连接):
netperf -H <服务器IP> -t TCP_RR -l 60-t TCP_RR:测试一次请求一次响应的往返延迟(事务速率)。
- 服务器端:
MTR(My Traceroute):实时分析网络路径和丢包
虽然不是纯粹的“压测”工具,但在压测过程中,用来定位“瓶颈在哪一跳”非常有效。
- 作用:持续发送数据包并显示路径上每一跳的丢包率和延迟。
- 操作方法:
mtr -r -c 100 <目标IP>- 会从本机到目标IP,输出每个节点(路由器)的丢包和延迟情况。
- 如果压测时发现丢包,用MTR可以看到是中间某台路由器扛不住了,还是目标服务器本身不行。
进阶:模拟应用层网络压力(HTTP/WebSocket)
工具主要工作在传输层(TCP/UDP),如果你的目标是压测Web服务器的网络处理能力(如Nginx、反向代理、负载均衡器),需要应用层工具,因为它们能模拟真实用户行为。
- wrk / wrk2:专为HTTP设计的压测工具,能用少量线程压出极高的并发连接。
wrk -t12 -c400 -d30s http://<目标URL>(12个线程,400个并发连接,持续30秒)。
- Locust / JMeter:如果要模拟复杂的登录、购物车等业务流程对网络连接的影响,这些工具更合适,它们的分布式模式可以模拟上万台终端。
压测网络时需关注的指标
在压测过程中,你需要重点关注以下数据,而不是只看“跑满了多少带宽”:
- 吞吐量:单位时间内成功传输的数据量(Mbps / Gbps)。关键:是否达到了理论链路带宽的90%以上?如果没到,说明瓶颈可能在CPU、网卡配置或中间设备上。
- 延迟:
- 平均延迟(Latency):数据包往返时间。
- 抖动(Jitter):延迟的方差,UDP应用(VoIP、视频)尤其敏感。
- 长尾延迟(P99/P999):最慢的1%或0.1%的请求延迟,如果这个值很高,说明网络存在突发拥塞。
- 丢包率:重传率,TCP协议下,超过0.1%的丢包率通常意味着网络链路已过载或设备性能不足。
- 并发连接数:系统能同时维持多少个TCP连接,特别对防火墙、负载均衡器、Nginx非常重要,工具如hping3或wrk可以观察连接建立速率。
一个典型的网络压测流程(以办公室到IDC为例)
假设你要测试公司办公网络到IDC机房的专线性能:
- 基线测试:
- 在非高峰时段,用
iperf3 -P 4 -t 10跑一次,记录最大带宽、延迟和丢包率,假设是900Mbps,2ms,0%。
- 在非高峰时段,用
- 长时间压力测试:
- 用
iperf3 -P 16 -t 3600压测1小时,观察中间是否出现掉速或丢包,如果丢包突然增加,说明网络设备有过热或缓冲区溢出的情况。
- 用
- 并发连接测试:
- 用
hping3 -S -p 80 --flood <目标> -c 100000测试中间防火墙或路由器能承受多少半开连接,如果压到一半连不上,说明安全策略或连接表满了。
- 用
- 混合流量测试:
同时运行大文件传输(iperf3)和小包实时应用(netperf TCP_RR),观察大流量是否会导致小包延迟剧烈增加(即“缓冲膨胀”效应)。
- 问题定位:
- 如果丢包,运行
mtr <目标IP>看是哪一跳出的问题。
- 如果丢包,运行
| 工具 | 最佳用途 | 命令示例(客户端) |
|---|---|---|
| iPerf3 | 带宽、UDP抖动/丢包 | iperf3 -c 192.168.1.1 -P 10 -t 30 |
| hping3 | 并发连接、协议攻击、包大小 | hping3 -S -p 80 --flood 192.168.1.1 |
| netperf | 事务速率、精细延迟 | netperf -H 192.168.1.1 -t TCP_RR -l 30 |
| wrk | Web服务HTTP并发 | wrk -t12 -c400 -d30s http://192.168.1.1/ |
| mtr | 路径诊断、定位瓶颈节点 | mtr -r -c 50 192.168.1.1 |
一个非常重要的安全提醒:不要对未经授权的目标网络进行压测,网络压力测试可能会影响生产环境,甚至被误判为DDoS攻击,请在受控的测试环境或经过明确授权的链路中进行。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。