性能测试的必要性:
- 在分布式应用中用户数量是不确定的,用户使用的场景也是不确定的,用户少可能没问题,但是用户多了,就可能会有各种各样的问题
- 我们要模拟用户数量增加的状态,给系统加负载,然后进行性能测试,从而判断[并发用户数量],[CPU],[内存],[硬盘I/O]
- 三个重要的指标[用户多并发],[稳定性],[响应速度]
性能测试的指标有哪些:
- 响应快慢(服务端的处理速度)
- 服务端资源的使用状况(CPU,内存,数据库)
- 最大用户访问数量
- 同时处理的业务(请求)数量
- 系统稳定性
- 资源可否被正常回收(cpu,线程等)
- 系统的可恢复性
性能测试的内容:
- 性能测试:系统的响应,资源利用,稳定性和可恢复性
- 负载测试:测试不同用户数下,性能指标的变化,得出一个满足性能指标的最大负载
- 压力测试:高压状态下用户多并发的测试,关注系统时怎么崩溃的:CPU无响应,内存泄漏,数据库无反应,网络拥塞,在什么负载下,系统会失效,依次获得最大服务级别
- 容量测试:系统最大支撑的相关数量,数据库最大数量,用户数量最大
- 并发测试:多用户同时访问,模块数据,查看对资源的争夺情况和死锁的发生
- 可靠性:给系统加负载,查看系统长时间稳定运行的状况
- 失败测试:检测系统发生故障时,用户可否正确使用
性能测试的具体指标
- QPS(TPS):每秒可以处理多少请求
- 响应时间:请求的处理时间
- 并发数:某一时间点,服务器正在处理的请求数
- 吞吐量:在一次测试过程中,网络上上传数据量的综合,和负载和压力有关(QPS)
- 最大并发量:寻找最大并发的过程
一次完整的性能测试:
- 定义一个响应时间,以及成功率
- 在这样一个性能指标之下,找到最高的吞吐量——负载测试
- 在高吞吐量下做压力测试,查看系统什么时候失效——压力测试
- 找到极限值:100%成功率,坚持10分钟的吞吐量
- 最后进行稳定性测试