一.压测的目的
压力测试是对系统不断施加压力,来获得系统最大服务能力的测试。
一般而言,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行压力测试。
目的:
1.当负载逐渐增加时,观察系统各项性能指标的变化情况是否有异常
2.发现系统的性能短板,进行针对性的性能优化
(如:使用 mysql 存储的系统,高并发情况下,数据库读写速度慢,可以考虑增加数据库中间件,加缓存等;使用 redis 存储的系统,通常存储不会制约性能,但在高并发情况下,Redis 的吞吐量非常大,这时候就需要考虑增加网络带宽来提高性能。)
3.系统在高并发情况下是否会报错,进程是否会挂掉
4.测试在系统某个方面达到瓶颈时,系统可以支持的最大负载
二.压测的关注点
压测的指标通常有 tps、响应时间、错误率等,服务器资源监控 cpu、内存、 I/O。
指标的来源:用户对各项指标提出明确需求,如果用户没有提出性能指标则根据用户需求和自己的经验来预估
观察服务器的各种异常情况
1、响应变慢
2、返回 4XX、5XX 错误码
3、服务器无响应
4、服务器 crash 等
三.压测指标
注:并发用户数≠每秒请求数
比如说:在性能测试工具或者脚本中设置了 100 并发用户数后,并不是每秒 100 个请求发给服务器。每秒发出多少请求只跟服务器返回响应的速度有关。如果用户在 50ms 内就收到了响应,那么它会立即发出第二个请求;而如果要一直等待 3 秒才能得到响应,它将会一直等到收到响应后才发出第二个请求。所以,只有当响应时间恰好是 1 秒时,并发用户数才会等于每秒请求数;否则每秒请求数可能大于并发用户数或小于并发用户数。
各项指标关系曲线