压测模型抽象
压测模型可以被抽象为如图所示的模型
该模型主要包含如下三个部分:
压测环境准备
环境准备是压测的基础,主要包括
1、压力机资源
2、被压测系统
3、依赖资源
压测任务准备
压测任务准备主要是为了梳理压测目标,确定压测方案,可以细化为如下几个方面:
压测目标:比如期望达到的QPS、稳定性要求。
压测场景:业务场景的选取、组合
压测策略:逐步加压,增大脉冲,并发量等。
压测执行闭环
压测是一个不断调整压测参数、进行压测、找到问题、解决问题、再次验证等一系列过程的组合,并不能一次性就可以做到完整、极致。整个压测过程是一个闭环过程,这个过程可以拆分为如下几个方面:
1、使用压力机压测
2、分析程序收集压测数据(RT、QPS/TPS、成功率、错误、内存、CPU、I/O等)
3、分析压测报告
4、确定优化计划
5、反馈到压测系统或者调整压测策略
线下压测模型
开发环境和压测环境隔离。
优点
1、可以实现快速压测。
2、压测场景可以自由确定。
3、可以进行稳定性测试或者链路性能回归。
缺点
1、仿真度不高
2、环境部署负责
3、多个压测任务一般不能并行
4、依赖系统可能缺失
5、测试环境和线上环境数据量不一样
线上引流压测模型
线上引流压测模型是使用比较多的高仿真压测,要求系统具备流量的控制能力,通常采用调整路由策略,其模型结构如图所示。
优点
1、真实的业务场景测试
2、可以快速回退
3、不需要准备测试数据、压测系统。
缺点
1、很难进行超过业务流量的压测
2、能够压测单机性能,但是很难评估链路性能
线上全链路压测模型
优点
1、高仿真
2、可以构造比日常容量大得多的请求量
缺点
1、该模型的实时成本高
难点
1、模拟请求如何构造
2、模拟流量特性和真实流量特性一致
3、模拟极端情况,热点等