1. 测试准备与目标定义
- 明确目标:并发请求数(RPS)、并发连接、最大带宽、防护触发阈值(例如100k RPS或10Gbps)。以促销高峰预估值的1.5~2倍作为压测目标。
- 列出测试资产:公网IP、域名、负载均衡器、后端应用服务器、CDN与高防设备管理控制台账号。
2. 环境搭建与权限确认
- 在日本机房确认BGP/Anycast是否已启用,记录高防设备的清洗阈值及放行规则修改权限。
- 为压测生成器预留独立公网出口(避免污染生产链路)。确保监控(Prometheus/Grafana)、日志(ELK)已接入。
3. 流量建模与场景设计
- 设计场景:静态资源高并发、登录/下单API高并发、混合浏览与结算流量。为每个场景定义RPS、并发连接、payload大小与会话保持。
- 制定时间线:渐增(ramp-up)10分钟、峰值30分钟、衰减10分钟。
4. 压测工具选择与样例脚本(k6)
- 推荐工具:k6(轻量)、Locust(Python可扩展)、JMeter(复杂场景)。示例k6脚本:export default function(){ http.post('https://shop.example.jp/api/checkout', JSON.stringify({items:[1]}), {headers: {'Content-Type':'application/json'}}); },使用命令:k6 run --vus 200 --duration 30m script.js。
5. 真实流量与混合测试方法
- 先在灰度域名或流量镜像环境做内部压测,使用nginx的mirror模块将小比例真实流量镜像到测试集群。配置例:location / { mirror /mirror; proxy_pass http://backend; }。
6. 高防设备与WAF检测步骤
- 在测试前沟通高防厂商:要求临时提升清洗阈值,或明确清洗后流量如何回传日志。
- 配置WAF策略:对登录/下单接口设置严格速率限制与白名单。Nginx限流示例:limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;在location中limit_req zone=one burst=20 nodelay。
7. 监控、告警与数据采集
- 建立关键指标:请求成功率、95/99分位延迟、后端CPU/内存、网卡带宽、报错码分布。Prometheus采集,Grafana面板与Alertmanager报警(阈值举例:5分钟内HTTP 5xx>1%触发)。
- 同步抓包与日志:使用tcpdump -i eth0 -w test.pcap(注意容量),后端打开access.log详尽记录。
8. 执行压测的实际步骤流程
- 步骤1:在非高峰窗口先跑10%负载检查连通性。
- 步骤2:按场景逐步ramp-up到目标,每步记录指标并拍照(截图或导出CSV)。
- 步骤3:达到峰值后观察高防是否触发清洗,记录清洗开始/结束时间与清洗前后流量与延迟变化。
- 步骤4:在触发清洗时验证业务是否可回退到备用路径(如备用负载均衡或海外节点)。
9. 结果分析与改进建议
- 汇总指标:对比RPS、错误率、P95延迟,识别瓶颈(CPU、连接数、后端DB)。给出改进项:增加缓存、优化DB索引、拆分接口、启用异步下单队列(RabbitMQ/Redis队列)。
10. 恢复与应急流程
- 制定回滚策略:若清洗误伤导致业务中断,立即通过高防控制台放行IP白名单或启用备用域名(CNAME切换)并通知团队。记录每一步操作时间。
11. 合规与日志保留
- 保存压测日志、pcap、监控导出与高防厂商日志至少30天,便于事后分析与合规审计。
12. 常见问题答疑 — 问:高防触发后业务如何快速恢复?
- 回答:先在高防控制台查看清洗策略,临时白名单关键IP或子网;若控制台不可用,立即切换到备用域名/CDN节点并通知运营下线非必要功能,优先恢复下单路径。
13. 常见问题答疑 — 问:用k6做压测时如何避免误伤生产?
- 回答:使用独立出口IP段、限制并发来源、先在预生产或流量镜像环境跑测试;与高防厂商协商测试窗口与阈值调整,避免触发大规模清洗。
14. 常见问题答疑 — 问:选日本高防服务器时应关注哪些指标?
- 回答:关注清洗峰值(Gbps/pps)、可用Anycast覆盖、白名单/黑名单灵活性、API/控制台响应速度、日志回溯能力与本地合规性(数据驻留)。
来源:高防日本服务器在电商促销期间的抗压能力评估报告