# frieza **Repository Path**: tester-dpf/frieza ## Basic Information - **Project Name**: frieza - **Description**: `Frieza`是一个jmeter分布式工具的加强版,更有效的控制jmeter的分布式执行效果 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-21 - **Last Updated**: 2023-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: jmeter, 分布式 ## README # _FRIEZA_ ### 简介 `Frieza`是一个jmeter分布式工具的加强版,更有效的控制jmeter的分布式执行效果
### 相较于jmeter分布式启动方式的优势 * `Frieza`知道各个`slave`所处的运行状态 * `Frieza`会对`java`环境进行检测,并尝试安装`jdk1.8`,当安装失败后会停止运行 * `Frieza`无需修改`master`或`slave`的`properties`中的`server.rmi.ssl.disable`,`remote_hosts` 等参数(运行jmeter命令时也无需指定-R参数) * `Frieza`具有更强的控制`slave`负载机的运行与停止的能力,避免`master`停止,但是`slave`仍在运行的情况,避免部分`slave`异常导致无法启动分布式命令 * `Frieza`自动检查jmeter脚本中的results相关模块是否已经被禁用(打开`result tree`会对性能结果有较大的影响) ### 配置与启动方式 1.将Frieza工具放置到`jmeter`的`bin`目录下 2.赋予工具可执行权限 ```text chmod +x Frieza ``` 3.启动Frieza-master ```text ./Frieza -M ``` 4.启动Frieza-slave ```text ./Frieza -R=192.168.0.3 (IP是master机的ip) ``` ```text _____ _____ _ _____ ______ ___ | ___| | _ \ | | | ____| |___ / / | | |__ | |_| | | | | |__ / / / /| | | __| | _ / | | | __| / / / / | | | | | | \ \ | | | |___ / /__ / / | | |_| |_| \_\ |_| |_____| /_____| /_/ |_| 2022/09/09 10:35:10 isMaster false 2022/09/09 10:35:10 master is : 10.0.12.6:8081 2022/09/09 10:35:10 The service is starting. Please wait... 2022/09/09 10:35:13 find Frieza master success... 2022/09/09 10:35:14 run cmd >>> ./jmeter -Djava.rmi.server.hostname=10.0.12.13 -s -j jmeter-server.log 2022/09/09 10:35:14 [jmeter-server] Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 2022/09/09 10:35:14 try run >>> yum -y install java-1.8.0-openjdk.x86_64 2022/09/09 10:35:14 try install jdk >>> sudo apt-get update; sudo apt-get -y install default-jdk 2022/09/09 10:36:16 install jdk success 2022/09/09 10:36:16 restart... 2022/09/09 10:36:16 [Frieza-client] close UpdateSlaveStatus func 2022/09/09 10:36:16 [Frieza-client] close isFailedStop func 2022/09/09 10:36:16 [Frieza-client] close recvRunCmd func 2022/09/09 10:36:16 [Frieza-client] close ALL func ok 2022/09/09 10:36:16 The service is starting. Please wait... 2022/09/09 10:36:19 find Frieza master success... 2022/09/09 10:36:20 run cmd >>> ./jmeter -Djava.rmi.server.hostname=10.0.12.13 -s -j jmeter-server.log 2022/09/09 10:36:22 [jmeter-server] An error occurred: Listen failed on port: 0; nested exception is: 2022/09/09 10:36:22 set server.rmi.ssl.disable is success 2022/09/09 10:36:22 [Frieza-client] close UpdateSlaveStatus func 2022/09/09 10:36:22 [Frieza-client] close isFailedStop func 2022/09/09 10:36:22 [Frieza-client] close CommandAndOutputChan func 2022/09/09 10:36:22 [Frieza-client] close recvRunCmd func 2022/09/09 10:36:22 [Frieza-client] close ALL func ok 2022/09/09 10:36:22 The service is starting. Please wait... 2022/09/09 10:36:25 find Frieza master success... 2022/09/09 10:36:26 run cmd >>> ./jmeter -Djava.rmi.server.hostname=10.0.12.13 -s -j jmeter-server.log 2022/09/09 10:36:28 [jmeter-server] Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.0.12.13:44581](local),objID:[-1626e3b8:183201b1097:-7fff, 5023703330960619866]]] ``` 5.查看命令帮助文档 ```text ./Frieza -h -M default slave server -R string master host -v version ``` ### Frieza-master交互式命令 * **slave** 查看所有连接成功的`slave`的运行状态 ```text Starting // 启动中 Idle // 空闲状态 Running // 运行中 Stopped // 停止状态 Failed // 启动失败 ``` ```text Frieze>>> slave nums Ip status 1 192.168.31.1 Starting 2 192.168.31.2 Idle 3 192.168.31.3 Idle 4 192.168.31.4 Idle ``` * **jmeter** 与jmeter命令行执行方式一样,命令会自动添加`slave`中`status`处于`Idle`状态的设备 ```text Frieze>>> jmeter -n -t demo.jmx ``` * **log** 读取`jmeter.log`文件的内容(查看jmeter压测数据,jmeter运行日志) ```text Frieze>>> log ... 2022-09-02 17:49:33,504 INFO o.a.j.r.Summariser: summary + 1 in 00:00:05 = 0.2/s Avg: 46 Min: 46 Max: 46 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0 2022-09-02 17:50:18,739 INFO o.a.j.r.Summariser: summary + 9 in 00:00:45 = 0.2/s Avg: 22 Min: 21 Max: 24 Err: 0 (0.00%) Active: 0 Started: 1 Finished: 1 2022-09-02 17:50:18,739 INFO o.a.j.r.Summariser: summary = 10 in 00:00:50 = 0.2/s Avg: 24 Min: 21 Max: 46 Err: 0 (0.00%) ... ``` * **stop** 停止所有 `status = Running`的`slave`,使其停止运行并恢复到`Idle`状态 ```text Frieze>>> stop ``` ### 测试系统支持情况 - [x] CentOS 7.6 - [x] CentOS 8.0 - [x] CentOS 8.2 - [x] TencentOS Server 3.1 (TK4) - [x] TencentOS Server 2.4 (TK4) - [x] Ubuntu 18.04.1 LTS - [x] Ubuntu 20.04 LTS - [x] Debian - [ ] Windows Server - [ ] Mac OS ### TODO 1. [ ] 更多系统支持 2. [ ] 自动根据现有的设备情况自动配置`slave`的`JVM` 3. [ ] 根据`csv`或`txt`文件以及目前`slave`的数量自动分发测试数据到各个`slave`的指定目录中 4. [ ] 检测并提示`master`和`slave`中的`jmeter`版本是否匹配