1. 前提与准备
- 准备至少1个控制节点(控制并发脚本)与2+个测试节点(发送/接收流量),建议节点在美国机房,带宽需按测试目标预留。
- 安装必要工具:iperf3、ssh、screen/tmux、python3(用于并发脚本)、tcpdump(抓包)/iftop(实时流量)。命令示例:
sudo apt update && sudo apt install iperf3 python3-pip tcpdump -y。
2. 网络与权限配置
- 确保各节点公网IP可互通,放行TCP/UDP端口(iperf3默认5201)。示例iptables放行:
sudo iptables -I INPUT -p tcp --dport 5201 -j ACCEPT。
- 若节点使用私网或NAT,需在网关做端口映射或使用内网穿透并记录公网测试IP。
3. iperf3 单节点测试步骤
- 在接收节点启动服务端:
iperf3 -s -p 5201 --logfile /tmp/iperf_server.log。
- 在发送节点做基本测试:
iperf3 -c SERVER_IP -p 5201 -t 60 -P 1(-t秒数,-P并发连接数)。先单连接验证带宽与延迟。
4. 多节点并发测试编排
- 控制节点通过SSH并行触发各发送节点,示例python并发脚本(伪码):循环节点列表,ssh执行
iperf3 -c SERVER_IP -P 10 -t 60并将结果保存到各自日志。
- 推荐使用screen/tmux在各节点后台运行,防止SSH断开影响测试进程。
5. 典型参数与优化
- 并发参数:-P(并发连接数),建议逐步增加(例如1,10,50,100)观察线性关系与瓶颈。
- TCP调优:调整窗口
sysctl -w net.core.rmem_max=268435456和
net.core.wmem_max,并设置
net.ipv4.tcp_rmem/tcp_wmem。MTU按网络链路设置。
6. 路由/NAT与多出口测试
- 若使用多公网IP或多出口,请在路由器/服务器上绑定源IP并固定路由,Linux上可用ip rule/ip route实现:
ip rule add from X.X.X.X table 100; ip route add default via GATEWAY dev eth0 table 100。
- 测试不同出口时,保证对应防火墙与带宽配额一致,记录每个出口的测试日志。
7. 数据采集与分析
- 收集各节点iperf3日志,关键字段:retransmits、bits/sec、jitter(UDP)。用脚本提取并汇总到CSV便于绘图。
- 同时抓包(tcpdump)以确认TCP三次握手、RST、重传等问题:
tcpdump -w capture.pcap port 5201。
8. 常见故障与排查步骤
- 若带宽未达到预期:检查链路抖动、丢包、服务器IO或CPU瓶颈(top/iostat),以及ISP限速。
- 查看iperf3服务端日志、系统内核计数(/proc/net/netstat)及防火墙记录,定位丢包或连接被重置原因。
9. 合规与安全提示
- 在美国或任何网络上做压力测试前必须取得被测方明确授权,避免触犯法律或引发运营中断。
- 控制测试流量峰值,设置分段测试窗口并告知网络运营方。
10. 问:如何在多节点测试里确保每个测试IP真正使用美国出口IP?
- 答:在每个测试节点上使用
curl ifconfig.me或类似服务确认出口IP,并在开始前通过路由规则(ip rule/ip route)绑定源IP,必要时在旁路设备(如边界路由器)做SNAT映射。
11. 问:并发很高时如何防止控制节点成为瓶颈?
- 答:将控制任务仅作为调度中心,真正的发送负载应由多个发送节点执行;控制节点只推送命令并收集日志。可用Ansible/pssh分发并行命令,避免控制节点直接参与大量流量生成。
12. 问:如何判断测试结果是否可信?
- 答:通过多轮重复测试、不同时间窗口对比、抓包确认无异常重传且服务器资源未饱和,且各节点日志一致性好,结果才可信。另外避开运营高峰并记录ISP限速策略以排除外部影响。
来源:美国大带宽 测试ip在多节点压力测试中的配置与用法