Mysterious:分布式压测平台化实现

经常有测试同学加我微信,问GitHub上这个平台怎么部署,因为之前只是自己随便玩玩,无法比较规范的部署;简单业务接口,场景作为压测的触发还是可以的,但如果是流程比较复杂的,比如长链路,造数,不仅仅是依靠JMeter的能力就能完成的,就像公司的压测,我一直在考虑如何将平台应用起来,但当前感觉还是性价比不高,也没时间去搞;但近期很多人都在问,正好结合前段时间了解了一些前端,因此周末把部署整了一下,顺便除了二进制把容器化docker-compose方式也做了一下,能够玩耍,看后续公司的性能测试能否用起来

B站也上传了两个视频(登录后可高清):
【部署流程视频】

【使用说明视频】


以下是GitHub的README内容

Mysterious

分布式压测平台后端服务,前端Vue3+TypeScript,后端SpringBoot服务,压测引擎JMeter5.5,基础是JMeter的分布式压测

经验总结

平台依赖

操作视频

安装部署

Docker-Compose部署方式(Master节点)

容器化部署比较简单,但Master节点需要部署一堆Docker的组件,会有一些资源占用的损耗,本身是性能测试,所以如果是对压测数据要求比较高,也可以二进制单节点部署

  1. 前端部署
  1. 平台部署
  • git clone https://github.com/100ZZ/mysterious.git
  • cd mysterious/docker
  • ./init.sh (如果有报错,看shell脚本每一步操作,来定位)
  • cp -r [上一步前端目录]/dist /opt/mysterious/nginx/html/
  • docker-compose –env-file VERSION.env up -d
  • docker-compose ps查看,有mysterious,mysterious-mysql,mysterious-nginx,mysterious-redis四个容器
  1. 访问平台

二进制部署方式(Master节点)

比较推荐弄一个高配额的单节点来部署平台进行压测,避免了Docker和分布式交互的开销,下面以CentOS7为例介绍下安装步骤

  1. 前端部署
  1. 安装nginx,mysql,redis
    1. nginx
      • 1234.conf和9998.conf复制到/etc/nginx/conf.d下(根据系统实际情况),并修改下,比如mysterious-nginx改成localhost,mysterious改成最后前端页面访问的IP地址
      • mkdir -p /usr/share/nginx/html/
      • cp -r [上一步前端目录]/dist /usr/share/nginx/html/
    2. mysql
      • mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘Test@123456’;
      • mysql> use mysql;
      • mysql> update user set host=’%’ where user=’root’;
    3. redis
      • 没啥好说的,起来就行了,不用设密码
      • redis.conf可自行下载,或者docker目录下有
  2. 平台部署
  • git clone https://github.com/100ZZ/mysterious.git
  • 修改application.properties,mysterious-mysql和mysterious-redis都改成localhost
  • mvn -f pom.xml clean install package -Dmaven.test.skip=true
  • mkdir -p /opt/mysterious/mysterious-data
  • mkdir -p /opt/mysterious/running
  • cp docker/mysterious.jar /opt/mysterious/running/
  • cp docker/service.sh /opt/mysterious/running/
  • cd /opt/mysterious
  • git clone https://github.com/100ZZ/mysterious-jmeter.git
  • sh /opt/mysterious/running/service.sh restart
  1. 访问平台

Slave节点部署

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

  • mkdir /opt/mysterious
  • cd /opt/mysterious
  • git clone https://github.com/100ZZ/mysterious-jmeter.git
  • 如果之前有一些测试用例,可以页面节点管理,先点击一下节点同步,会将master节点用例数据都同步到slave节点,然后启用slave节点即可
  • 只要有slave节点启用,压测都会是分布式压测,如果全都禁用,压测就只是Master单节点压测

说明

整个安装部署包括平台的前后端服务和JMeter工具包目录

  • 如果是单节点压测,只需要在一个Master节点上安装部署压测平台和Jmeter工具包,通过平台来调用Jmeter来执行压测用例,并返回压测结果
  • 如果是分布式压测,除了上面Master节点安装部署外,还要在Slave节点上安装Jmeter工具包,启动jmeter-server进程,大致数据流如下 

发表回复