1.
测试目标与环境概要
- 目标:验证香港部署的CN2母机在高并发、持续带宽消耗和长连接场景下的稳定性与性能表现,收集延迟/吞吐/错误率/资源使用等指标并给出调优建议。
- 环境:一台
香港CN2母机(外网IP,可路由到中国大陆/国际链路),一台或多台本地/云压测机(建议不同运营商/区域),管理机用于收集日志与分析。硬件/内核版本、网络接口名(如eth0)、MTU等需记录。
2.
准备工作:账号、权限与工具安装
- 本地/远程账号:确保你有root或sudo权限来调整内核参数与抓包。
- 常用工具安装(示例命令以Ubuntu为例):sudo apt update && sudo apt install -y iperf3 wrk tcpdump htop iotop sysstat nload mtr traceroute git ethtool conntrack jq
- 若使用JMeter或Locust:准备好对应的压测脚本与分布式工作节点。确保压测机时间同步(ntp/chrony)。
3.
确认网络路径与CN2链路特性
- 路径检测:从压测机和母机分别执行traceroute -T -p 80 <目标IP>或mtr -rwzbc 100 <目标IP>,确认是否走CN2/直连链路,记录AS号与跃点延时。
- 带宽验证:使用iperf3 -s在母机上运行服务端,压测机执行iperf3 -c <母机IP> -t 60 -P 8,观察吞吐稳定值与丢包、重传。
4.
测试场景与指标定义
- 场景示例:短连接高TPS(HTTP GET短连接)、长连接高并发(WebSocket/TCP长连接)、持续大带宽下载(文件下载)。
- 核心指标:P50/P90/P99延迟、最大并发连接数、吞吐(Mbps/req/s)、连接失败率、TCP重传率、CPU/内存/NIC使用、socket状态(TIME_WAIT/TCP_CLOSE)、中断/队列溢出。定义合格阈值(如P99 < 200ms,错误率 < 0.5%)。
5.
详细测试计划与分阶段执行步骤
- 阶段划分:0-准备/基线;1-渐增(ramp-up);2-稳定(steady-state);3-冲击(峰值短时);4-回收(ramp-down)。
- 示例步骤:1) 基线:10并发、30s;2) 渐增:每30s并发增加50,直到达到目标并发(如5000);3) 稳定:保持目标并发10分钟;4) 峰值:短时冲击1分钟并记录指标;5) 回收:逐步降低并发。
6.
压测脚本与命令示例(HTTP短连接)
- wrk示例:wrk -t8 -c1000 -d600s --timeout 10s http://<母机IP>:80/path
- wrk脚本可配置Keep-Alive或自定义Headers,长期测试注意设置--latency以输出延迟分位数。
- 多机分布式:在每台压测机上同时启动同样的wrk命令,并在管理机合并输出(或使用telegraf/Prometheus收集)。
7.
压测脚本与命令示例(长连接 & WebSocket/TCP)
- WebSocket示例工具:使用autobahn-tools或自写Go/Node脚本维持N个长连接并定期发送消息,记录连接建立耗时与消息延迟。
- 原生TCP:使用wrk2或自定义工具,针对长连接保持大量socket并模拟应用层心跳。注意监控文件描述符限制(ulimit -n)。
8.
系统与网络参数调整(提前准备)
- ulimit:ulimit -n 200000; 在/etc/security/limits.conf加入软硬限制。
- 内核优化(示例,慎改并记录):sysctl -w net.core.somaxconn=65535; sysctl -w net.ipv4.tcp_max_syn_backlog=65535; sysctl -w net.ipv4.tcp_fin_timeout=30; sysctl -w net.ipv4.tcp_tw_reuse=1; 若需要可启用BBR:modprobe tcp_bbr && sysctl -w net.ipv4.tcp_congestion_control=bbr。
- 网卡调优:ethtool -K eth0 tx on rx on gro off gso off tso off(视需求关闭硬件卸载以便排查)。
9.
监控采集与日志抓取(实时与后期分析)
- 实时采集:在母机运行sar -n DEV 1 > dev.log & sar -u 1 > cpu.log & iostat -x 1 > io.log;使用iftop/nload查看流量。
- 报文抓取:tcpdump -i eth0 -s 0 -w capture.pcap 'tcp and host <压测机IP>',采样抓包以分析重传/延迟。
- TCP统计:ss -s、ss -nt state syn-recv、ss -tanp | grep TIME_WAIT;查看/proc/net/netstat或netstat -s获取重传计数。
- 日志保存:将所有采样时间线对齐(UTC),并记录压测开始/结束时间戳。
10.
故障排查与常见问题定位
- CPU瓶颈:top/htop查看系统/irq占用;若中断过高,考虑调整RSS/队列数或启用RPS/XPS。
- 网络丢包/重传:查看ifconfig/ethtool统计、tcpdump确认重传包;排查运营商链路或防火墙速率限制。
- 连接耗尽:检查ulimit、netstat -an | grep TIME_WAIT统计、应用是否正确关闭连接;考虑启用SO_REUSEPORT或调整应用连接池策略。
11.
结果分析与示例报告结构
- 报告内容:环境说明、配置清单、测试脚本与命令、指标时间序列图(延迟分位/吞吐/错误率)、异常事件记录与抓包片段、瓶颈定位与根因分析、优化建议与复测结论。
- 示意分析:若P99延迟在高负载时飙升且tcp重传率上升,则优先定位网络链路或NIC队列与中断配置,再看应用层连接处理。
12.
常用调优建议与复测策略
- 网络层:确认MTU一致,减少分片;调整net.core.netdev_max_backlog与txqueuelen。
- 内核与拥塞控制:尝试BBR或调整拥塞窗口参数;注意不同链路对BBR的表现差异。
- 应用层:优化连接复用(Keep-Alive/HTTP2)、增加工作线程池、减少同步阻塞、使用异步IO。
- 复测:每项调整后重复基线-渐增-稳定流程,记录差异并回滚不可行的修改。
13.
附:实操注意事项与合规性
- 在进行高强度压测前,务必通知网络/运营商与相关团队,避免触发DDoS防护或影响他人服务。
- 生产环境压测需谨慎,优先在灰度/预生产网络或限流条件下进行。记录所有改动并保留原始配置用于回退。
14.
问:为什么要特别验证CN2路由?
- 答:CN2(中国电信CN2)通常走更优的骨干与对大陆的专线线路,往返延迟和丢包特性与普通国际链路不同。验证路由能确认是否真正走CN2路径(通过AS号、traceroute多路径对比),从而使测试结果反映真实用户体验并能针对性优化链路与内核参数。
15.
问:常见导致高负载下P99突增的根因有哪些?
- 答:常见根因包括:网络抖动或丢包导致重传、NIC队列或中断瓶颈、应用线程池耗尽与阻塞、socket连接数逼近系统/应用限制、负载均衡不均匀分配。通过抓包、ss/ netstat、sar/iostat等多源数据交叉定位可以快速缩小排查范围。
16.
问:复测通过后的生产上线建议有哪些?
- 答:先在小流量灰度验证,逐步放量并监控关键指标;将已验证的内核与应用配置写入部署模板,并在运维SOP中注明回退步骤;同时建议建立长期监控与告警(P95/P99延迟、连接错误率、丢包率),以便及时发现链路或应用退化。
来源:性能测试案例香港cn2母机在高负载场景下的表现报告