一、概述
1.1背景&目的
描述:交代本次压测的背景信息,基于什么现状去做的;描述下本次压测是为了什么,想要得到什么效果;
例如:本次主要在推荐配置上压测部分核心接口和场景,旨在确认某项目核心接口和场景的基线数据以及评估系统的性能,并对标行业性能目标进行优化调优,输出超越同行的性能标准和可扩展能力的优秀产品,满足未来客户不同诉求下的性能标准
1.2接口清单
描述:接口简单描述,确认优先级
例如:
管理平台 | openapi创建内部用户 | Openapi /v1/innerUsers/create | P0 |
1.3场景与指标
描述:列举清楚压测的接口、场景和指标;其中常见的指标有并发数、TPS、RT;场景考虑的点会比较多,以不同的业务为准
例如:
管理平台 | openapi创建内部用户/v1/innerUsers/create | openapi | 并发数>xx T PS > XXX RT <XXXms |
二、环境
真实记录整个现场,后续压测也方便比对
2.1系统部署架构图
架构图是非常重要的,决定了后续需要监控哪些服务,熟悉业务流转,业务的部署情况不一样,也会影响性能,甚至能提前预判哪些服务可能存在问题,像这样:
2.2服务器的配置
硬件配置、不同的服务性能配置参数不一样(JVM ,DB ,中间件)、软件配置
例如:
4 C 8 G | rocketmq | -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m | JDK 1.8.0_292 |
2.3应用配置
主要是关注与性能相关的配置tomcat、mysql、redis、连接数、超时时间等
例如:
# Tomcat settings
server.tomcat.min-spare-threads= 100
server.tomcat.max-threads= 1000
server.tomcat.max-connections= 3500
server.tomcat.accept-count= 1000
2.4压测数据库存量
存量数据的重要性,为什么不建议空库压测;收集数据当前存量、增长量(例如1个月2 0 W),推演1年后的存量数据,作为本次压测的基准(这样尽量保障系统运行一年也能达标);如果没有存量数据,这个就可以基于目标/指标考虑,比如,一天要签署1 0 W份* 365 ,还要预估增长情况,可以* 2 或3倍;原则就是不要预估少了,但是太多太离谱也不行,这样对人力资源的消耗过大
三、压测策略
3.1压测工具
提前安装各种监控平台和分析工具,jmeter等
3.2压测指标
分类 | 具体类型 | 说明 | 例如 |
Perceived system performance | R esponse time | 请求响应时间 | 一般关注平均响应时间,90%,最长等 |
t ps | 每秒处理事务数 | 通常类似qps | |
Error rate | 错误率,关于错误率的统计主要有以下几种:
| 一般要求0%,稳定性压测时可以接受0.01错误率 | |
并发数 | 指某一时刻向服务器发送请求的用户数 | ||
system performance | CPU | us : 用户态cpu时间 sy : 系统态cpu时间 id : 空闲cpu时间 w a: 等待io的cpu时间 load average:平均负载 | 一般cpu使用率<8 5 % |
内存 | V m使用情况 页面swap si:交换进内存 so:交换出内存 | 一般使用率<8 5% | |
磁盘 | Hhd/ssd, 类型 (read /write ) I ops : 即每秒系统能能处理的I/O请求数量。 TPUT: 吞吐量。 | ||
网络 | 速率、带宽、吞吐量、 时延 | ||
其他 | GC | Y GC频率 ,FGC 频率 , YGCT ,FGCT, 堆使用率 | |
线程池 | A ctive /init/max thread count, 队列 | ||
数据库jdbc | jdbc active connection | ||
S ql耗时 | 慢sql,平均/最大耗时 | ||
命中率 | K ey buffer,q uery cache 等 | ||
锁 | 等待次数,等待时间等 |
3.3策略
1、 指标验证 : 验证被测交易在测试环境中是否能达到指标要求的TPS/RT,每个轮次持续5分钟。(单接口指标验证,如果单接口都无法达到指标,无需再进行负载和稳定性测试,不满足最基础的交付目标,需要重点优化。)
2、 负载测试 :在指标验证基础至上,对每个接口逐步增大并发,每个轮次持续5分钟。(阶梯性的加压测试,找出性能拐点,压测出当前系统下最大的处理能力,便于对后续容量和风险预估。)
(验证结果是否可信,可以用公式tps(约) = 并发数/ rt 去套,约接近证明结果越准确)
3、 混合测试 :贴近业务情况,合理设置比例进行压测
4、 稳定性测试 :建议> 12h ,观察系统波动、有无崩