1.压测需求分析
提炼出隐性的性能指标:如qps达到200;响应时间不超过500ms;错误率0;
2.压测数据准备
A.可以从现实拉日志做压测请求数据的;直接通过kibana或者让运维把日志中的请求过滤出来作为压测的请求数据
B.新服务没有真实的线上请求,接口参数值是可枚举的,自己造请求;不可枚举的话,根据接口的不通过功能进行分类压测或混合压测
3.压测环境准备
1.检查压测服务部署的机器资源,保证服务申请的机器资源充足,不要因为机器资源不足的原因导致压测数据很差
常见问题:容器宿主机资源不足,压测前,先找容器小助手协调资源(暂时);已提需求给容器平台去做,支持压测功能,单独提供压测机器进行压测
4.编写压测脚本
1.通用脚本:使用jmeter进行梯度压测,获取每个梯度的压测数据;比如设置梯度的初始值为cpu个数的线程数(如cpu核数申请的是8,那梯度的初始值就为8;梯度最大值设置为80;递增值为8;设置每次递增后持续压测300s)
5.执行压测脚本
6.分析压测数据,得出压测结果
压测通过标准:
1.机器cpu、内存、网络、磁盘资源不过载的情况下;能达到性能指标【如qps达到200;响应时间不超过500ms;错误率0;】
压测不通过标准:
1.不符合压测通过的标准均视为压测不通过
7.压测性能瓶颈排查
1.排查是否是机器资源、宿主机资源不足导致;主要注意CPU和内存使用情况
2.排查有无依赖,有依赖排查是否是依赖服务响应时间过长导致(如果是依赖服务响应超时,可以通过mock服务解决依赖问题)
3.排查是否是程序本身问题
常用性能监测的linux命令:
8.编写压测报告
1.描述压测通过的标准
2.描述压测数据来源
3.描述压测环境
4.描述压测数据
5.描述压测结果