性能基础理论

一、性能测试的意义

现状:互联网行业发展快,用户量大大增加;业务和系统架构越来越复杂,数据越来越多,用户不仅仅满足于功能的实现,在某些场景下,更在意系统性能。
 
二、什么是性能测试
百科解释:https://baike.baidu.com/item/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/1916148?fr=aladdin
 
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
 
通过一定的手段,在多并发情况下,获取被测系统的各项性能指标,验证被测系统在高并发下的处理能力、响应能力,稳定性等,能否满足预期。定位性能瓶颈,排查性能隐患,保障系统的质量,提升用户体验。
 
三、什么样的系统需要做性能测试
◼ 用户量大,PV比较高的系统
◼ 系统核心模块/接口
◼ 业务逻辑/算法比较复杂
◼ 促销/活动推广计划
 
四、性能测试发生的场景
◼ 新系统,新项目(旧)
◼ 线上性能问题验证和调优
◼ 新技术选型
◼ 性能容量评估和规划
◼ 日常系统性能回归
 
五、性能测试指标
1、TPS
事务:在性能测试领域里,衡量一个系统性能的好坏,主要看的是单位时间内,系统可以处理多少业务量。
各个系统的业务各不相同,为了方便衡量业务的性能,需要在测试脚本中添加一对标签,测试工具统计单位时间内,标签的业务量,就可以统计出真实的业务量。
脚本中的标签,就叫做事务。事务是用户定义的,想测试什么业务的性能,就把该业务加到事务中。
(测试“下单” 业务,将下单放到事务标签里,测试“添加购物车-下单” 整体业务将两个接口加在一个事务标签里)
TPS/QPS
Transaction Per Second 每秒处理的事务数
Request Per Second 每秒处理的请求数
2、平均响应时间
 
 响应时间=网络传输的总时间+各组件业务处理时间=RT(Response Time)
平均响应时间:在测试过程中,所有请求的平均耗时=ART(Average Response Time)
 
3、TOP响应时间
将所有请求的响应时间先从大到小进行排序,计算指定比例的请求都是小于某个时间。
该指标统计的是大多数请求的耗时。
Tp90(90%响应时间):90%的请求耗时都低于某个响应时间
Tp95(95%响应时间):95%的请求耗时都低于某个响应时间
Tp99(99%响应时间):99%的请求耗时都低于某个响应时间
 
4、其他性能测试指标
并发数/虚拟用户(Vuser):压测工具中设置的并发线程/进程数量
成功率:请求的成功率
PV(Page View):页面/接口的访问量
UV(Unique Visitor):页面/接口的每日唯一访客
吞吐量:网络中上行和下行的流量总和,吞吐量代表网络的流量,TPS越高,吞吐量越大
 
TPS、响应时间和并发数的关系
在系统达到性能瓶颈之前,TPS 和 并发数 成正比关系
响应时间单位为秒的情况下
TPS = 1 / 响应时间 * 并发数
TPS = 并发数 / 响应时间
 
集合点
集合点是为了增加瞬间并发压力的一种机制,在脚本中增加一个标记,所有虚拟用户执行到标记处会进行等待,等所有用户都到达后,再同时继续执行下一步操作。
优点:对服务器来说,会产生一种瞬间高并发
缺点:对服务器来说,平均压力会降低
 
什么时候需要加集合点?
根据业务来选择,如果业务场景是瞬间高并发类型的,如抢购、秒杀等,需要加集合点;其他的场景都不需要加,一般加了集合点后,就不使用TPS来衡量系统性能
集合点功能要慎重选择,因为加了集合点后,系统的平均压力会降低 
 
六、性能监控指标
 
操作系统级别监控:
CPU使用率、内存使用率、网络IO(input/output)、磁盘(read/write/util)
中间件监控:
连接数、长短连接、使用内存
应用层监控:
线程状态、JVM参数、GC频率、锁
数据库监控:
连接数、锁、缓存、内存、SQL效率 
 
 
posted @ 2020-12-20 20:48  榆火  阅读(78)  评论(0)    收藏  举报