性能压测是当服务上线前,或者之后重要需求发布流程中,需要做的必要测试;以模拟真实流量的方式,获取当前系统的性能指标、是否存着高并发隐患、瓶颈等信息的手段。
性能压测处于什么位置?或者说什么时候去做呢?如何做?
如何做好线上环境的性能压测、全链路压测,如何做到压测结果准确无误,不影响外部环境、不污染数据,需要深入思考。
一、测试分类
按照上线流程:
- 单元测试
- 集成测试
- 兼容性测试(前端、客户端)
- 性能测试
运维阶段:
- 安全测试
- 容灾测试(故障恢复测试)
由上可以看出,性能测试是应用服务在上线过程中的一个流程,除非是内部系统,访问量少,否则都应当做一下性能测试。
安全测试又叫渗透测试,是运维和研发需要关注的问题;尤其是对数据安全要求高的系统。当一个服务稳定运行后,模拟一些攻击手段,防止SQL注入、网络攻击、脚本攻击等。
容灾测试是容灾方式的验证,容灾方式包括:双机房建设、异地多活、两地三中心。
二、压测目的
- 了解吞吐量
- 瓶颈值
- 系统隐患
可用:一次请求,到达服务器,有回应;那么针对这次请求,服务是可用的,无论返回成功或者失败。
不可用是指请求没有返回,长时间等待,没有应答,客户端不知道结果。
高可用级别:99%、99.9%、99.99%、99.999%
大家经常说的系统可用性达到三个9,就是指99.9%。
高可靠:是指服务可靠,数据可靠。请求返回是成功,数据写入正确,分布式环境下数据一致性等。
三、压测指标
四、实现流程
1. 压测工具选型
Jmeter + Influxdb + Grafana + Collectd
2.压测环境准备
- 服务环境
- 压测机
- 数据库
- Redis
- MQ