1.需求分析阶段
需求阶段产品需要提出相应功能(接口)的性能需求,如果没有性能需求开发可以认为常规开发(需要有一个兜底性能指标),若客户有性能要求,产品需要跟客户沟通,提供性能需求相关指标:pv,uv,api响应时长(如果客户有需求)等。
说明:
兜底性能指标 QPS
是否有性能要求
2.系统设计/开发阶段
根据客户提供的指标:pv,uv,api相应时长要求计算一台机器的QPS,系统设计按照QPS设计接口,分析给出有性能要求的api
QPS:每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力。 QPS = req/sec = 请求数/秒
QPS统计方式 [一般使用 http_load 进行统计]
QPS = 总请求数 / ( 进程总数 * 请求时间 )
QPS: 单个进程每秒请求服务器的成功次数
峰值QPS:
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
PV:
访问量即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次
单台服务器每天PV计算
公式1:每天总PV = QPS * 3600 * 6
公式2:每天总PV = QPS * 3600 * 8
UV:
独立访客即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次
服务器数量:
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
机器:ceil( 每天总PV / 单台服务器每天总PV )
并发数:
并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量
吐吞量:
吞吐量是指系统在单位时间内处理请求的数量
响应时间(RT):
响应时间是指系统对请求作出响应的时间
例子:
每天500w PV 的在单台机器上,这台机器需要多少QPS?
答:( 5000000 * 0.8 ) / (86400 * 0.2 ) = 231 (QPS)
如果一台机器的QPS是90,需要几台机器来支持?
答:231 / 90 = 3
计算方式参考文档:PV、UV、QPS之间的关系_hello_old_city的博客-CSDN博客
系统设计优化点:
1.适当添加缓存,需要考虑数据一致性问题,需要有清除缓存的api
2.数据库查询尽量单表查询,read接口不要做write操作
3.能异步的接口尽量不要同步
4.有效日志打印,不要随便打印日志(浪费cpu)
说明:
性能指标给出QPS,性能设计,压测API ,架构师/项目owner跟进
3.测试阶段
参考压测方案文档
说明:
1.线上压测时间确定
2.性能报告输出
3.性能问题优化方案输出
4.问题优化 跟进人
5.循环上述过程
如果2-3轮压测仍然达不到要求考虑QPS指标是否合理或者是否需要添加硬件资源