Skip to content

【压测引擎】一个简单易用的性能测试平台,前后端分离项目;支持JMeter分布式压测,日志,报告等

License

Notifications You must be signed in to change notification settings

100ZZ/mysterious-jmeter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mysterious

分布式压测平台,前端Vue3+TypeScript,后端SpringBoot-2.3.12,压测引擎JMeter-5.5,支持JMeter的分布式压测,管理,执行,报告,日志等。因为设计,开发,测试都是自己,一些功能优化需求也是根据自己的使用来改进,目前主要优先考虑正确性和实用性,未来通过大模型生成JMX脚本也在考虑当中。

mysterious-3_compressed.mp4

经验总结

平台模块

测试流程

  • 测试说明
    • 本地上传:本地能运行的测试,上传测试的JMX,CSV,JAR等依赖,平台均可直接处理和执行,日志,报告
    • 在线生成:主要是JMX脚本,完成一些简单的脚本进行在线编写,毕竟JMeter各种插件众多,不可能都兼容
      • Threads:ThreadGroup,SteppingThreadGroup,ConCurrencyThreadGroup
      • Sampler:HttpSampler,JavaRequest,DubboSampler
      • Assertion:ResponseCode,ResponseMessage,JSONPath
      • 如果还有无法满足的测试需求,可以直接本地上传的方式来进行测试
    • 智能生成:后续考虑结合AI大模型,提供可视化prompt提示词输入,按要求生成JMX脚本
  • 压测模式
    • 如果是单节点压测,只需要在一个Master节点上安装部署平台和Jmeter工具包,通过平台来调用Jmeter来执行压测用例,并返回压测结果
    • 如果是分布式压测,除了Master节点安装部署平台和mysterious-jmeter引擎外,还要在Slave节点上部署mysterious-jmeter压测引擎,启动jmeter-server服务 fenbu

安装部署

Docker-Compose部署方式(推荐,一键部署)

容器化部署通过docker-compose方式,如果在线拉镜像不畅,可在下面网盘里下最新版本离线容器镜像


  1. 平台部署
  1. 访问平台
  1. 运行配置
  • 内存配置:docker-compose.yml里后端服务预分配了1G内存,可根据需求调整
  • 引擎内存:mysterious-jmeter/bin/jmeter里配置HEAP内存2g-4g-512m,可根据需求自行调整
  • 配置管理:MASTER_HOST_PORT修改为本地IP:PORT,作为压测报告预览的路径前缀,修改完重启容器
  • 运行路径:Master和Slave节点有关引擎的执行路径都可以在配置管理里进行修改,然后重启容器
  1. 版本更新
  • 后端更新:更新mysterious容器(最新的docker/${架构}.env配置覆盖${BASE_DIR}/.env),重启容器
  • 前端更新:更新dist目录,覆盖docker/mysterious/nginx/html/dist,重启mysterious-nginx容器
  • 库表变更:检查数据库脚本(docker/init.sql),执行变更部分的sql即可;因为db容器初始化sql只首次生效

二进制部署方式

下面以CentOS7为例介绍下安装步骤

  1. 前端部署
  1. 安装nginx,mysql,redis,jdk8+

nginx

  • 1234.conf和9998.conf复制到/etc/nginx/conf.d下(根据系统实际情况),并修改下,比如mysterious-nginx改成localhost,mysterious改成最后前端页面访问的IP地址,一些location路径一并修改
  • mkdir -p /usr/share/nginx/html/
  • cp -r [上一步前端目录]/dist /usr/share/nginx/html/

mysql

  • mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test@123456';
  • mysql> use mysql;
  • mysql> update user set host='%' where user='root';

redis

  • 没啥好说的,起来就行了,不用设密码
  • redis.conf可自行下载,或者docker目录下有
  1. 后端部署
  1. 访问平台

Slave节点部署(分布式压测,Slave节点作为压力机,启动Jmeter-Server服务)

  • 无特殊情况,推荐高配置单节点(平台管理+压力机)部署来进行压测,因为分布式压测交互也有开销
  • 无Slave节点启用,就只有Master单节点(平台管理+压力机)进行压测
  • 只要有Slave节点启用,就会作为压力机进行分布式压测,Master节点作为Client

如果需要分布式压测,找到和Master节点网络互通的Slave节点进行部署,最好是局域网,否则网络开销太大;无论Master节点是二进制还是Docker-Compose部署,Slave节点部署方式都如下

  • mkdir /opt/mysterious
  • cd /opt/mysterious
  • git clone https://github.com/100ZZ/mysterious-jmeter.git
  • 如果之前有一些测试用例,可以页面节点管理,先点击一下节点同步,会将Master节点用例数据都同步到Slave节点,然后启用Slave节点即可
  • 只要有Slave节点启用,压测都会是分布式压测,如果全都禁用,压测就只是Master单节点压测
  • 具体Slave节点的目录结构都是可配置的,具体可以参考配置管理页面
  • 同样的内存配置相关的,参考docker-compose部分的说明

About

【压测引擎】一个简单易用的性能测试平台,前后端分离项目;支持JMeter分布式压测,日志,报告等

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published