经常有测试同学加我微信,问GitHub上这个平台怎么部署,因为之前只是自己随便玩玩,无法比较规范的部署;简单业务接口,场景作为压测的触发还是可以的,但如果是流程比较复杂的,比如长链路,造数,不仅仅是依靠JMeter的能力就能完成的,就像公司的压测,我一直在考虑如何将平台应用起来,但当前感觉还是性价比不高,也没时间去搞;但近期很多人都在问,正好结合前段时间了解了一些前端,因此周末把部署整了一下,顺便除了二进制把容器化docker-compose方式也做了一下,能够玩耍,看后续公司的性能测试能否用起来
- 后端服务:https://github.com/100ZZ/mysterious
- 前端服务:https://github.com/100ZZ/mysterious-web
- JMeter工具包:https://github.com/100ZZ/mysterious-jmeter
B站也上传了两个视频(登录后可高清):
【部署流程视频】
【使用说明视频】
以下是GitHub的README内容
Mysterious
分布式压测平台后端服务,前端Vue3+TypeScript,后端SpringBoot服务,压测引擎JMeter5.5,基础是JMeter的分布式压测
经验总结
- 1. JMeter分布式压测
- 2. JMeter有关JAR依赖异常问题
- 3. 吐血定位端口映射影响JMeter分布式压测的异常问题
- 4. JMeter分布式压测启动流程简述
- 5. JMeter分布式平台化相关的异常问题汇总
- 6. 分布式压测平台响应时间的损耗分析
- 7. 平台化:JMeter脚本在线编辑初步实现
- 8. Grafana和InfluxDB帮JMeter提升性能监控的美感
平台依赖
- 后端服务:https://github.com/100ZZ/mysterious
- 前端服务:https://github.com/100ZZ/mysterious-web
- JMeter工具包:https://github.com/100ZZ/mysterious-jmeter
- 离线镜像:https://pan.baidu.com/s/128k3uiUvaKf0vgbD-BO28Q?pwd=e9qy 提取码: e9qy
- 其它组件:MySQL,Redis,Nginx
- 其它依赖:JDK1.8+(JMeter依赖),Docker,Docker-Compose
操作视频
- 安装部署:https://www.bilibili.com/video/BV1by421i7cn
- 使用说明:https://www.bilibili.com/video/BV15j421Z7mY
- 平台试用:http://101.43.119.176:1234 (demo/demo)
安装部署
Docker-Compose部署方式(推荐,一键部署)
容器化部署通过docker-compose方式,如果docker下载不畅,可直接上面网盘下离线镜像
- 平台部署(默认是X86_64环境,如果是ARM环境替换成docker-compose-arm.yml和arm.env启动)
- git clone https://github.com/100ZZ/mysterious.git /root/mysterious
- cd /root/mysterious/docker
- ./init.sh
- cd /opt/mysterious
- git clone https://github.com/100ZZ/mysterious-jmeter.git
- docker-compose up -d
- 访问平台
- http://xx.xx.xx.xx:1234
- 注册个用户,登录即可玩耍
二进制部署方式
以CentOS7为例
- 前端部署
- git clone https://github.com/100ZZ/mysterious-web.git
- cd mysterious-web
- npm install
- npm run build (生成dist)
- 安装nginx,mysql,redis
- 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/
- 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目录下有
- nginx
- 平台部署
- 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
- 访问平台
- http://xx.xx.xx.xx:1234
- 注册个用户,登录即可玩耍
Slave节点部署(如果需要分布式压测,额外部署Slave节点Agent服务)
- 无特殊情况,推荐高配置单节点(平台管理+压力机)部署来进行压测,因为分布式压测交互也有开销
- 无Slave节点启用,就只有Master单节点(平台管理+压力机)进行压测
- 只要有Slave节点启用,就会作为Agent压力机进行分布式压测,Master节点作为Client
如果需要分布式部署,找到和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进程,大致数据流如下