若依项目性能测试实战

一、前期调研

1、项目选型

项目:选择之前自己玩的基于开源项目ruoyi二次开发的一个小游戏的项目,springboot框架。
部署:阿里云ECS最低配置,单核cpu,1.9G内存。
接口:获取玩家信息/getInfo接口(GET请求)

2、测试工具选型

脚本:jmeter
测试数据存储:influxdb
监控:grafana、PerfMon Metrics Collector插件

二、准备阶段

1、监控环境搭建

详见jmeter性能测试监控搭建记录

2、测试脚本编写

脚本目录

编写思路:

  • ruoyi项目本身自带的权限控制,需要先登陆获取token,用于后面请求被测接口getInfo时在header中携带

  • 由于测试单接口并发,避免冗余操作,使用仅一次控制器,把登陆的流程包起来(当然,如果是想测试事务的并发,可以把仅一次控制器改成事务控制器)

  • ruoyi项目的登陆是基于图形验证码实现的,验证码结果code存储在redis里,这里选择使用JSR233 Sampler编写beanshell脚本请求redis获取code存入jmeter变量vars中(也可使用jmeter插件Redis Data Set,但我这里报错了,感兴趣的可以尝试一下,我感觉还是脚本比较灵活一些,后来就没折腾插件)


    JSR233 Sampler
  • 后端监听器用于将测试结果存储于influxdb中,供grafana获取


    后端监听器
  • PerfMon Metrics Collector用于实时监控服务器cpu、mem等


    PerfMon Metrics Collector

三、开始测试

1、负载测试-确定最大负载

负载测试目的是找到系统保持正常运行前提下的最大负载数(也就是并发量),此过程不需要跑较长的时间,通过关注接口请求的结果和响应时间调整线程数量。
线程数8跑5分钟:


8个线程

时间平均2.08s,有1个报错
改成6线程:


6个线程

最大响应时间也就1s左右,无报错
改成7线程试试:
7个线程

最大20.9s,有一个报错
综上,得到结论最大负载数为6

2、压力测试-较大负载长时间

等待中……

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容