news 2026/6/13 5:15:40

Jmeter 压测-利用Docker分布式压测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jmeter 压测-利用Docker分布式压测

Jmeter分布式测试环境中有两个角色:Master 和 Slaves

  1. Master节点:向参与的Slaves节点发送测试脚本,并聚合Agent节点的执行结果。

  2. Slaves节点:接收并执行Master节点发送过来的测试脚本,并将执行结果返回给Master。

为什么要使用docker?

如果要分布式联动每台主机,就要求每台主机都要有Jmeter环境(JDK + JMeter)

如果利用docker就可以通过docker管理 Jmeter环境,简单的拉取镜像,启动容器即可。

进一步讲,利用k8s、云服务可以无限的扩容Jmeter试压机,理论上多少的并发用户都可以模拟。

1、准备工作

JDK:启动 Jmeter 工具需要

$ brew install openjdk@11

Jmeter:编写Jmeter脚本

编写一个简单的脚本。

docker:通过doker创建容器。

  1. $ docker pull runcare/jmeter-master

  2. $ docker pull runcare/jmeter-slave

查看docker镜像

  1. $ docker images

  2. REPOSITORY TAG IMAGE ID CREATED SIZE

  3. runcare/jmeter-master latest e052a8cd8680 3 years ago 326MB

  4. runcare/jmeter-slave latest 05c7ba96d97d 3 years ago 326MB

请记住 jmeter-master 的镜像ID e052a8cd8680,后面会用到。

2、分布式压测使用

启动 slave 节点。

假设有两台主机,可以启动两个slave。​​​​​​​

  1. $ docker run -it -d --name slave01 runcare/jmeter-slave

  2. $ docker run -it -d --name slave02 runcare/jmeter-slave

查看启动的容器​​​​​​​

  1. $ docker ps

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  3. b270636a7741 runcare/jmeter-slave "/bin/sh -c 'jmeter-…" 43 seconds ago Up 42 seconds 1099/tcp, 60001/tcp slave01

  4. 2584c7fef5f8 runcare/jmeter-slave "/bin/sh -c 'jmeter-…" 52 seconds ago Up 50 seconds 1099/tcp, 60001/tcp slave02

查看两个slave 的IP 地址​​​​​​​

  1. $ docker inspect -f '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -q)

  2. /slave01 => 172.17.0.3

  3. /slave02 => 172.17.0.2

  4. /k8s_nginx_nginx-deployment1-fc7586d97-jvjvk_nginx_4379ed7f-b0be-4f9f-a0a9-4a5fd7b45b38_1 =>

  5. /k8s_nginx_nginx-deployment1-fc7586d97-bztbh_nginx_6968e6b1-6689-4f1a-a9ea-04532577841c_1 =>

发送压测脚本到 slave

$ result=`date +"%Y%m%d%H%M%S"` && docker run --rm -v /Users/fnngj/zhpro/script:/data e052a8cd8680 jmeter -n -t /data/baidu_script.jmx -l /data/$result.jtl -j /data/$result.log -e -o /data/$result -R 172.17.0.2,172.17.0.3

参数说明:​​​​​​​

  1. result=date +"%Y%m%d%H%M%S"`: 指定测试结果的名称,以当前日期时间命名。

  2. /Users/fnngj/zhpro/script : 压测脚本的目录,测试结果也会存放到该目录下。

  3. baidu_script.jmx : 压测脚本的名称,存放于 /Users/fnngj/zhpro/script目录下。

  4. e052a8cd8680 : jmeter-master 的镜像ID。

  5. 172.17.0.2,172.17.0.3 :两台 slave 的IP 地址。

3、测试结果

执行完的目录​​​​​​​

  1. $ pwd

  2. /Users/fnngj/zhpro/script

  3. $ ls

  4. 20230707005328 20230707005328.jtl 20230707005328.log baidu_script.jmx

查看报告

进入20230707005328 目录,点击 index.html 文件,可以看到压测的结果。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 8:39:54

Jmeter 命令启动-动态参数化

Jmeter命令行参数 1、在Linux中,使用非GUI的方式执行Jmeter。若需更改参数,必须先编辑jmx文件,找到对应变量进行修改,比较麻烦。 因此,可以参数化一些常用的变量,直接在Jmeter命令行进行设置 2、参数 -J…

作者头像 李华
网站建设 2026/6/13 5:04:32

从基础到多模态:Llama-Index RAG 七大企业级落地场景实战

七大场景 企业级RAG检索实战(附源码) RAG 落地生产环境,如何解决 “检索准确性”(事实一致性/语境完整性/领域术语召回)和 “多模态解析”(PDF 图表、图片甚至视频)两大难题? 本文通…

作者头像 李华
网站建设 2026/6/12 2:46:54

光伏并网系统的仿真就像搭积木,每个模块看似独立却又环环相扣。今天咱们直接上手拆解这个光伏三相并网Simulink模型,顺便聊聊那些藏在模块背后的“骚操作

光伏三相并网Simulink仿真模型(光伏并网仿真模型) 电路包括五个主要模块:PV光伏阵列Boost DC/DC 变换器三相逆变器L型滤波器交流电网; 控制系统包括:MPPT控制系统交流电网侧逆变器控制系统; 基本工作过程 1…

作者头像 李华
网站建设 2026/6/12 8:23:51

Hyperledger Fabric与 FISCO BCOS深度对比

一、核心架构与设计哲学对比 Hyperledger Fabric(Linux基金会主导) 设计理念:模块化、可插拔的企业级区块链 架构特点: ├── 通道机制(数据隔离) ├── 可插拔共识(Kafka/Raft) ├…

作者头像 李华
网站建设 2026/6/13 20:26:03

30、ImageMagick:强大的图形文件处理工具

ImageMagick:强大的图形文件处理工具 在图形处理的领域,ImageMagick 是一款功能强大但使用起来颇具挑战的工具。下面将介绍几个使用 ImageMagick 完成不同图形处理任务的脚本。 1. 水印添加脚本 水印添加是保护图片版权的常用手段,以下是实现该功能的脚本: newfilenam…

作者头像 李华
网站建设 2026/6/13 2:29:43

python-uniapp微信小程序的自助自习室预约选座系统的设计与实现_7r4zk039

文章目录系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 python-uniapp_7r4zk039 微信小程序的自助自习室预约选座系统的设计与实现 项目技术简介 Pyth…

作者头像 李华