压测指标
- QPS:Query Per Second,每秒处理的请求个数
- TPS:Transactions Per Second,每秒处理的事务数,TPS <= QPS
- RT: Response Time,响应时间,等价于Latency
RT分平均延时,Pct延时(Percentile分位数)。平均值不能反映服务真实响应延时,实际压测中一般参考Pct90,Pct99等指标 - CPU使用率:出于节点宕机后负载均衡的考虑,一般 CPU使用率 < 75% 比较合适
- 内存使用率:内存占用情况,一般观察内存是否有尖刺或泄露
- Load指标:CPU的负载,不是指CPU的使用率,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,表示CPU的负载情况,一般情况下 Load < CPU的核数*2
- 缓存命中率:多少流量能命中缓存层(redis、memcached等)
- 数据库耗时:数据库就是业务的生命,很多时候业务崩掉是因为数据库挂了
- 网络带宽:带宽是否瓶颈
- 接口响应错误率 or 错误日志量
测试思路
- 在响应时间的限制下,系统最高的吞吐量(这里不对吞吐量做严格定义,当成是QPS或TPS即可)
- 在成功率100%的前提下,不考虑响应时间长短,系统能承受的吞吐量
- 容忍一定的失败率和慢响应,系统最高能承受的吞吐量(95%成功率,前95%的请求响应时间为xx毫秒时的最大QPS)
- 在上面的场景下还要考虑时间和资源,比如最高吞吐量持续10分钟和持续1小时是不一样的,不同的时间持续长度下,机器资源(cpu、内存、负载、句柄、线程数、IO、带宽)的占用是否合理