
导读:压测的一般流程和方法是什么?需要关注哪些数据指标?如何推算后端需要支持的qps?本文分享总结压测过程中需要注意的问题,希望对同学们有所启发,欢迎讨论~

后端
单api
单业务逻辑场景
前端
单request
单操作
单页
整体页面平均情况

qps
rt
成功率
页面平均响应时间 (重要)。
并发量(其实没那么重要,主要还是qps)。
最大用户同时在线数 (用户登录系统,一般不需要额外压测,除非业务场景特殊)。
网络质量(延迟,波动等,不展开)。

cpu usage
load
mem
jvm/fullGC
连接数(netstat)
disk io (iostat / iotop)
如果你提供的是一个在线的网页服务,那用户可能关心的是,你的系统在保证不察觉卡顿的情况下(系统的SLA, 实际可能容忍存在偶发的页面错误重试)能承受多少人并发使用。
如果你提供的是个结算系统,那用户可能关心的是,在保证交易有效性的情况下(不能出错,但是可以偶发超时重试,同样是系统的SLA),每秒可以处理多少笔订单。
1. 获取现场每日asapi PV/UV的均值/峰值。
2. 取Max(PV峰值*0.8,每日PV均值)作为目标PV', PV'时段的UV值作为实际并发用户参考值N', 计算PV'/perMinute/N'作为每分钟用户操作触发api次数O'。
3. 根据以下规则换算成后端需要支持的qps:
3.1 模型假设:2/8原则——每日有80%的PV发生在20%的工作时间内(ratio=0.8)。
3.2 假设页面单个请求映射到后端api请求比例为1:10,假设一天working hour为8小时 (e=10)。
3.3 假设一般用户,高峰期每分钟操作页面10次 (o=10)。
3.4 根据现场日PV计算支持N'用户并发操作需要的qps:PV' * ratio/(working hour∗60∗60∗(1−ratio) )= qps
3.5 根据现场峰值小时级PV计算支持N'用户并发操作需要的qps:PV' * ratio/(1∗60∗60∗(1−ratio) ) = qps
4. 根据压测qps推算能够支持的最大用户同时使用数:
4.1 同样基于上述公式,根据上述假设,1分钟内,每个用户操作10次,每次前端操作对应后端10个api:
1分钟PV = N * 10 *10
N *10 *10 / 60 = qps ==> N = qps * 0.6
4.2 如果按照小时为单位推算,1个小时内,每个用户操作页面100次,每次前端操作对应后端10个api:
60分钟PV = N * 100 *10
N *100 *10 / 60*60 = qps ==> N = qps * 3.6
链路跟踪能力,分析瓶颈点
api log
eagleye-traceId
缓存对数据库的影响
是否需要压到db层,要考虑压测场景。
是否需要创造海量的随机压测数据 (比如针对单用户的缓存优化场景,单一用户的性能不能用来推送多用户并发的场景)。
同步接口异步接口的压测 (staragent)
主要考验后台任务处理能力(异步任务提交即时返回了)。
系统不同层次的限流设置对API的影响
比如有业务层的限流如Sentinel, Nginx层的限流如X5, 或者其他基于LVS的限流等。
消息通信,尤其是广播消息。
数据库,尤其是写一致性。
复杂场景的长链路调用。
Nginx/Tomcat的配置对请求的影响。
容易忽视的对象序列化/反序列化对性能的影响。
热点数据。
推荐阅读
毕业就进入微信的同学是如何准备面试的?
GoLand 2020.3 正式发布了,有不少新功能,包括支持泛
持刀女孩对峙房东,新华社怒批:绝不能让“割韭菜者”一跑了之
用大白话给你解释Zookeeper的选举机
微信第 1 行代码曝光
Linux服务端最大并发数是多少?
科普:学C++的以后能从事哪些岗位?(文末内推字节C++岗位
Linux C/C++ 服务器/后台开发学习路
如果程序员面试时大家都说真话…画面过于真实,易引起不适请慎入
你已经是个成熟的985大学了,请不要在大一教 C 语言!
小霸王,终于把500亿的市值玩没了…
C++ 如何进阶?如何准备 C++ 面试?
微信图标现在可以换颜色了??
也许是最客观、最全面的比较RUST和go语言
腾讯在「无用」道路上越走越远
腾讯 Code Review 规范出炉
拼多多员工曝离职黑幕:要走可以,要离职证明,没有
那天,我被拉入一个Redis群聊···
“12306”的架构到底有多牛逼?
如果对后端开发感兴趣,想加入 高性能服务器开发微信交流群 进行交流,可以可以先加我微信 easy_coder,备注"加微信群",我拉你入群,备注不对不加哦

帮忙点赞、在看和转发呗~

