此为本人实践接口性能压测的各项具体操作流程的总结,认知还比较浅,欢迎拍砖。
brief:
- 确定活动预期
- 输出活动预期涉及的页面和接口并做分析
- 根据分析输出压测计划
- 编写locust脚本
- 准备压测环境
- locust运行
- 压测结果分析
- 服务器压测情况分析
1、确定活动预期
与产品和运营讨论后确定以下点:
- 活动期间的用户画像和漏斗模型
- 预期入口流量高峰
- 流量预期持续时间
2、输出活动预期涉及的页面和接口并做分析
(ps:省略了部分中间业务环节的拆解分析)
其他分析:
- 其他二级页面访问量比较低且响应时间较快。
- 如新建地址等接口,响应时间为秒级且漏斗最后进入下单并需创建地址的流量较小,评估无需压测。
- 目标最高并发数=入口流量*1.5 = 1500 (为入口的并发流量)
- 测试执行并发数 = 目标最高并发数
- 各页面执行比重 = 漏斗转换比例(执行比重是locust的配置项,比如下单流,100个在线用户,80个在访问首页,10个在访问商详,则执行比重为8:1)
- 单个接口的执行比重:原则上每个页面的接口的执行比重=页面执行比重的,总比重=涉及的页面比重之和。但部分接口是有条件触发的,则其接口各涉及页面比重进入页面时该接口的触发比 之和( 如登录接口,首页的触发比例=0.8,估价页触发比例0.8,则该接口执行比重 = 0.820+0.810=24)
- /login需依赖第三方鉴权,无法模拟,临时绕过该鉴权调用或增加白名单通道。
3、根据分析输出压测计划
说明:
1>、执行比重:执行比重是locust的配置,用装饰器@task来配置。比如下单流,100个在线用户,80个在访问首页,10个在访问商详,则执行比重为8:1
2>、单个task脚本的请求接口:这里的压测计划以页面为单位任务,方便设置统一的执行比重并且结构更清晰参数更通用。
3>、每秒启动用户:一般活动期间的高峰不是一下子到达最高的,都是经过一段时间增长上去的。可参照历史高峰的增长趋势来设置多久到达最高峰。