目的:
- 在QA环境进行负载测试,找出AWS中的服务瓶颈、优化配置选型。
一、总体方案
1,开发人员利用VSCode生成API 的 Swagger ,利用 openapi-generator导入JMeter
2,测试人员按照系统特点,进行系统使用的粗线条定义(覆盖关键指标),在JMeter中设置符合指标的并发数量、高峰时段等,运行测试。
3,AWS 监测人员观察系统负载情况,并登记成报表,找出系统弱项。
4,测试人员观察JMeter的运行状况,当有大量访问不满足时长、可连通性时,登记报表由开发协助找出原因。
5,改进AWS的的资源配置,必要时优化架构。
二、环境准备
2.1 Nest 在本地DEV环境下,生成Swagger
详见项目框架中的配置
2.2 安装JMeter
下载地址:https://jmeter.apache.org/
详见:https://www.cnblogs.com/stulzq/p/8971531.html
2.3 安装 OpenAPI Generator
下载地址:https://pan.baidu.com/s/1tj5G99_aCbRc8FKRNrP8vg
提取码: 3ugu
详见:https://blog.csdn.net/leenhem/article/details/119816061
三、AWS服务准备
AWS 服务采用Cloudformation 首次部署、GitHub Action自动部署,在运行测试前只需要确保环境是否最新即可。
四、本地配置
4.1 准备Swagger JSON文件
开发本地生成
4.2 生成JMeter脚本
先将Json 文件放到与OpenAPI Generator 同目录
启用控制台或Powershell,运行如下指令:
java -jar openapi-generator-cli-5.1.0.jar generate -i swagger.json -g jmeter
4.3 导入脚本
打开Jmeter程序,依次选择File–>Open,选择.jmx文件,导入。
4.4 编辑变量
点击“User Defined Variables”,修改系统Host、Port等变量。
查找.jmx同目录下的CSV文件,修改各API所需的参数变量并修改为Mock值
4.5 设置访问量
选择需要验证的API,修改线程数等因业务个性化的值。
目的是在一次负载测试运行周期内,能够在该API中模拟正常的调用频次、并发量。
4.6 运行与查看
点击View Results Tree 查看结果
点击上方的运行(三角符号)开始本轮负载测试
4.7 导出报告
五、AWS跟踪
5.1 Cloudwatch指标监测
进入Cloudwatch,点击Dashboards中的本项目监控界面,查看数据库、容器服务、API,相关内存、CPU、磁盘读写等指标。
找出整个系统在高负载时,某个AWS服务成为瓶颈及指标。
5.2 Cloudwatch日志监测
进入日志组,查看日志的详细情况、日志的合规性、日志的完整性、审计日志等的功能。
5.3 AWS优化
根据测试结果,优化服务指标配置、必要时优化架构。
可能的原因:
1,架构的合理性
2,AWS 服务(如RDS的CPU)指标的配置低
3,AWS 自动伸缩功能未能有效启用
4,部分服务的编码逻辑和处理性能低
5,等等