
- 确认VPS系统:建议Ubuntu 20.04或CentOS 7+/8+,SSH可用;
- 安装基本工具:sudo apt update && sudo apt install -y curl iperf3 htop git;
- 准备测试机:最好一台位于台湾或邻近地区的控制机,用于生成并发流量;如果没有,可租用临时云主机。
- 指标包括:吞吐(RPS)、响应时间(P50/P95/P99)、错误率、丢包率、带宽占用、TCP重传;
- 确定峰值场景:并发连接数、请求类型(静态/动态)、测试持续时长(如15/30/60分钟)。
- CPU/内存:top/htop查看负载;free -m查看内存;
- 网络延迟:mtr -c 100 目标IP 或 ping -c 50 目标IP;记录丢包和时延抖动;
- 带宽测试:在控制机和VPS上分别运行 iperf3 -s(VPS) 和 iperf3 -c VPS_IP -t 30(控制机)。
- 安装Prometheus Node Exporter:wget ... && systemctl enable --now node_exporter;
- 配置Grafana展示:搭建Grafana并添加Prometheus数据源,创建CPU、网络、磁盘和网络接口图表;
- 开启应用层日志采集(nginx/应用),确保能按时间轴对应请求失败。
- 安装wrk:sudo apt install -y wrk 或编译源代码;
- 基础命令:wrk -t4 -c200 -d60s http://VPS_IP:80/endpoint;其中-t线程数、-c并发连接、-d时长;
- 逐步递增并发和持续时间,记录响应时间和错误率,建议先从50/100并发开始,再倍增到目标峰值。
- 安装k6:sudo apt install -y k6 或下载官方包;
- 编写脚本示例(simple.js):export default function(){ http.get("http://VPS_IP/"); sleep(1); };
- 运行:k6 run --vus 200 --duration 10m simple.js;可模拟更真实的用户行为(登录、接口链等)。
- 使用tcpdump抓包:sudo tcpdump -i eth0 host CONTROL_IP -w capture.pcap(注意磁盘);
- 分析TCP重传:在Wireshark或tshark中查看TCP Retransmission、ZeroWindow;
- 使用sysctl临时调优:sudo sysctl -w net.core.somaxconn=1024 && sudo sysctl -w net.ipv4.tcp_tw_reuse=1。
- Nginx:worker_connections/worker_processes根据CPU和连接数调整,keepalive_timeout适当降低;
- 文件描述符与ulimit:ulimit -n 65536,并在/etc/security/limits.conf中持久化;
- 缓存策略:使用本地缓存(Redis或内存缓存),减少后端负载;开启gzip与静态文件CDN。
问:测试时发现丢包率和TCP重传很高,用户在峰值期丢线频繁,该如何排查与处理?
答:首先用mtr和tcpdump定位是链路端问题还是VPS内部瓶颈;若是链路问题联系大水管/运营商;若是VPS资源耗尽,提升网络队列(net.core.netdev_max_backlog)、增加带宽或优化应用并发与缓存,必要时扩容。
问:多次测试结果波动较大,如何保证每次测试可复现并可信?
答:固定测试时间窗口、使用相同控制机与网络路径、复位缓存服务并记录环境参数;在每次测试前采集基线指标并保持环境稳定(关闭无关进程、固定CPU频率)。
问:在完成峰值期稳定性测试后,哪些长期措施能持续提升用户体验?
答:建立持续监控告警(P95/P99阈值)、定期演练压测、自动化扩容(水平扩展或弹性伸缩)、使用CDN和边缘缓存,并把测试结果作为迭代优化的输入,形成SOP。