1 物料的提前准备工作
1.1 预估需要数据
如:需要多少个用户 = qps * 压测时长 (s为单位)
360w用户数据 = 1000qps * 360s 如:限时拉新红包请求时需要获取redis内的缓存 如果未发现缓存会报错 那么我们就需要提前构造数据 先通过开宝箱的方式来获取缓存 并且我们也要通过配置中台的配置来设置好前几个宝箱为能获取到redis的宝箱奖励
1.2预估接口需要的状态
是否有其他也业务方的状态依赖 如:助力次数增加/增加钥匙/新用户状态/初始化用户等等 因为需要模拟真是线上状态压测 所以需要提前准备符合线上状态的场景
1.3 预估依赖上游接口参数
压测接口需要依赖上一个接口的返回参数 如:开宝箱时需要获取home接口的宝箱位置来判断 进行效验 如果不符合db内的位置则无法开启宝箱进行下一步操作 这种情况需要接口并行请求
1.4 数据流转
当场景需要对qps进行分流时 就要用到接口的数据流转
2 qps
2.1 qps是什么
每秒请求访问次数
2.2 qps流量评估
1. 根据app的qps流量地图 到活动链路接入层qps入口推断
3 单接口压测
3.1 小流量压测
准备好压测数据后 可以先从500qps的小流量进行实验压测 下游依赖方是否可以获取到数据
3.2 阶梯示爬坡压测
小流量压测后 通过阶梯爬坡的方式 逐步升至峰值qps 如:4.5ww qps 初始1w 60s爬坡 每次爬1w 爬四次至峰值 持续60s
3.3 爬坡后持续峰值
当阶梯爬坡后没有问题时 就可以进行持续峰值压测 如:4.5w qps 初始5w 60s爬坡 持续360s
4 混合压测
4.1 双机房混合压测
正常情况下混合压测采用双机房
4.2 单机房混合压测
压测单机房目的是为了 如果其中一个机房出现问题 那么另一个机房可以承受住双机房带来的压力
5 压测或线上服务器挂了怎么办
5.1 限流
超压测流量会触发限流 给用户返回一个被限流的状态
5.2 切流
CDN运营商不可用/域名不可用/IP不可用
5.3 熔断降级
外部底层依赖挂掉或出现异常 会触发降级预案 各个依赖业务方会产出不同的降级预案
5.4 cpu报警扩容
当cpu内存过高时会触发报警 对cpu进行扩容处理
6 压测数据性能指标
6.1 p90 p95 p99 p995
接口耗时p99 前99%用户 p95 接口耗时前99.5%用户
6.2 错误码场景分析
根据错误码推断错误原因与问题类型
6.3 CPU使用率
1 cpu使用率越高 cpu的百分比性能越差 80%不等于两个40% 2 cpu使用率过高报警后会出现限流 3 cpu使用率过高处理方法 优化代码方法的处理逻辑 如果代码过于复杂 或者排期进度紧张 那么就只能通过扩容的方式来处理 4 单机房cpu使用率预期60%以内 5 双机房cpu使用率预期30%以内
6.4 内存使用率与内存使用量
内存使用率与cpu的指标类似 可以判断内存使用率多少 当前的内存使用量是多少
|