基于 Docker 部署的 JMeter 分布式压测 作者: Chuwen 时间: 2022-02-19 分类: 软件 ## 简介 本文以在 1 台物理机上,用 Docker 模拟部署 JMeter 分布式压测。 实际应用中应该是每一台物理机上启动 1 或多个 slavel 节点并开放相关端口,然后由 master 分发任务进行测试 ![11111111111111111.svg](https://cdn.nowtime.cc/2022/02/19/3789213742.svg) ## 准备工作 ### 1. 创建 3 个 slavel 节点(用以处理 master 发送的任务) ```shell docker run -it -d --name slave01 runcare/jmeter-slave docker run -it -d --name slave02 runcare/jmeter-slave docker run -it -d --name slave03 runcare/jmeter-slave ``` ![](https://cdn.nowtime.cc/2022/02/19/1166793631.png) 需要注意的⚠️ 是,如果你的 `.jmx` 配置文件里有设置 CSV 数据文件 需要将这个配置文件挂载到 slave 节点容器内,否则你的 mster 分发任务可能会执行失败! 这里假设你设置的 CSV 数据文件路径是 /data/dataset.csv ,那么你需要将这个文件映射到各个 slave 节点容器内: ```shell docker run -it -d -v /data/dataset.csv:/data/PP-dataset.csv --name slave01 runcare/jmeter-slave docker run -it -d -v /data/dataset.csv:/data/PP-dataset.csv --name slave02 runcare/jmeter-slave docker run -it -d -v /data/dataset.csv:/data/PP-dataset.csv --name slave03 runcare/jmeter-slave ``` ### 2. 创建 jmeter-master 容器 这里假设你的 `.jmx` 文件路径在宿主机的 `/data/test.jmx` 路径,我们需要将这个文件挂载到 master 容器上 另外我挂载了 `/data/HTMLDir` 目录,因为待会的演示中我会将 HTML 报告输出到这个目录下 ```shell docker run -it -d -v /data/test.jmx:/data/test.jmx -v /data/HTMLDir:/data/HTMLDir --name jmeter-master runcare/jmeter-master ``` ### 3. 查看 3 个 slavel 节点的 IP 地址 ```shell docker inspect -f '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -q) ``` 不出意外的话,你会看到以下信息: 可以看到的是 slave01 ~ slave03 的节点 IP 是: `172.17.0.4` `172.17.0.5` `172.17.0.6` ```shell ➜ ~ docker inspect -f '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -q) /slave03 => 172.17.0.6 /slave02 => 172.17.0.5 /slave01 => 172.17.0.4 /jmeter-master => 172.17.0.7 ``` ![](https://cdn.nowtime.cc/2022/02/19/878816207.png) ### 4. 进入 jmeter-master 容器 并进入到 `/data` 目录下 ```shell docker exec -it jmeter-master bash cd /datash ``` ![](https://cdn.nowtime.cc/2022/02/19/2724021563.png) ### 5. 在 jmeter-master 容器分发压测任务 注意 `-R` 参数,填写 `slavel` 节点的 IP 地址,有多个用英文 , 隔开 例如:`-R 172.17.0.4,172.17.0.5,172.17.0.6` 注意下 `-O` 参数,这个意思是将报告输出到 `HTMLDir` 目录下 ```shell jmeter -n -t test.jmx -l result.jtl -j result.log -O HTMLDir -R 172.17.0.4,172.17.0.5,172.17.0.6 ``` ![](https://cdn.nowtime.cc/2022/02/19/3157209000.png) 运行完成后,看下你宿主机 /data/HTMLDir 目录,应该是生成了如下文件: ```shell root@224aedf09fac:/data/HTMLReport# ls -l total 24 drwxr-xr-x 5 root root 4096 Feb 19 17:26 content -rw-r--r-- 1 root root 9464 Feb 19 17:26 index.html drwxr-xr-x 5 root root 4096 Feb 19 17:26 sbadmin2-1.0.7 -rw-r--r-- 1 root root 2695 Feb 19 17:26 statistics.json ``` 然后你可以直接拖到如 Chrome 浏览器打开,以下是部分截图: ![](https://cdn.nowtime.cc/2022/02/19/2635601332.png) ![](https://cdn.nowtime.cc/2022/02/19/3960056154.png) 标签: JMeter
俺来看看
欢迎看看 :)