性能测试基础
1. 性能测试
性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。
性能测试是一个总称,具体可细分为系统性能测试、负载测试、压力测试以及稳定性测试。
性能有主观视角(用户感受到的性能)和客观视角(按性能指标衡量)两个方面。网站性能测试的指标主要有:响应时间、并发数、吞吐量、性能计数器等。
响应时间直观地反映了系统的”快慢“;
并发数反映了系统的负载特性;
吞吐量体现了系统的处理能力;
主要的吞吐量指标有:TPS、QPS、HPS等;
性能计数器是描述服务器或操作系统性能的一些数据指标。
包括:System Load、对象与线程数、内存使用、磁盘与网络I/O等指标;
对这些指标设置预警阈值,运维与开发人员根据预警可及时发现并处理系统异常。
1.1 系统性能测试
是以系统设计初期规划的性能指标为预期目标,对系统不断增加压力,验证系统在资源可承受范围内,能否达到预期性能目标。
1.2 负载测试
当系统性能测试达到预期目标后,继续增加系统压力,直到系统的某项或多项性能指标达到安全临界值,如某资源以达到饱和状态(网络,内存,CPU等),以测试出系统在高负载下的最大性能指标。这个时候如果继续对系统施加压力,系统的处理能力不但不会提高,反而会下降。
1.3 压力测试
在超过安全负载的情况下,对系统继续施压,指导系统崩溃或不能再处理任何请求,以此获得系统的最大压力承受能力。
1.4 稳定性测试
被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统的稳定性。
在实际生产环境中,请求压力是不确定的,压力分布是不均匀的,因此为了能够更好地模拟生产环境,不均匀地系统施加压力可以更好地测试系统的稳定性。
2 全链路压测
全链路压测是在特定的业务场景下,将相关的链路完整地串联起来同时施压,尽可能模拟出真实的用户行为,当系统整站流量被打上来时,必定会暴露出性能瓶颈,继而可以探测出系统整体的真实处理能力,以及有指导地在特殊使其进行容量规划和性能优化。
全链路压测面临的挑战
业务系统多,涉及整条链路所有基础设施与中间件,如何确保压测流量畅通无阻,没有死角?
压测数据如何构造?
数据模型如何贴近真实?
直接在线上环境模拟,如何保证线上系统不受影响?
巨大的业务流量如何制作出来?
2.1 数据构造
2.2 数据隔离
逻辑隔离:直接把测试数据和正常数据写在一起,通过特殊标识区分
可能污染线上数据,破坏线上数据安全
虚拟隔离:在所有写数据的地方做mock,数据并不真正写入
不会污染线上数据,但是mock对压测结果的准确性会产生干扰
物理隔离:所有写数据的地方对压测流量进行识别,判断一旦是压测流量的写入,就写到隔离的位置,包括存储、缓存、搜索引擎等
2.3 流量构造
2.4 全链路压测平台化
评论