用 docker 创建 jmeter 容器, 实现性能测试

我们都知道,jmeter 可以做接口测试,也可以用于性能测试,现在企业中性能测试也大多使用 jmeter。docker 是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到容器中,就可以构建出一个独立的运行环境

所以,有人就想,能否把他们俩弄到一块来使用?

今天,我就来给大家讲讲如何结合起来使用。

首先,选择一个 Linux 机器,安装 docker

如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以加裙485187702,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

用 docker 创建 jmeter 容器(普通 jmeter)

从 nmb-jmeter-docker: 使用 docker 运行 jmeter 进行测试上下载代码,到 Linux 机器的/opt 路径下

进入 base-jmeter-docker 文件夹

执行 sh build.sh, 构建本地 jmeter 镜像

默认版本是 jmeter5.1.1

待构建成功之后,把用 jmeter 创建的 jmx 脚本文件,上传到 Linux 机器的 base-jmeter-docker 路径下,执行

sh jmeter.sh -n -t YouJMX_file \-l JTL_date +%Y%m%d_%H%M%S.jtl \-j jmeter.log \-e -o Report_date +%Y%m%d_%H%M%S

也可以把你的 jmx 文件上传到其他路径,在运行 jmeter.sh 命令时,指定 jmx 文件路径

这个命令和 jmeter 的 CLI 模式命令是一样的,cli 的相关参数也是可以使用。

创建增强型 jmeter 容器(jmeter 带插件)

  1. 下载【jpgc-jmeter-docker】文件夹中所有文件

  2. 构建本地镜像:sh build.sh

  3. 使用构建的镜像,运行 jmx 文件

    sh jmeter.sh -n -t YouJMX_file \

    -l YouJTL_date +%Y%m%d_%H%M%S.jtl \

    -j jmeter.log \

    -e -o report_date +%Y%m%d_%H%M%S

默认 jmeter 版本为 5.1.1

如果想要更改为其他版本,依次修改:Dockerfile、build.sh、jmeter.sh 文件中的版本号 5.1.1

注意: 请不要指定为低于 5 的版本,低于 5,生产的 HTML 报告可能有问题

在这个版本,改造了 HTML 报告和引入了 jpgc 插件,如果你还想要引入其他插件,可以自己打包压缩到 JmeterPlugins-jpgc.zip 文件包中。然后,执行 sh build.sh 构建新的镜像,

创建分布式 jmeter 容器(slave)

做性能测试,一般都会遇到 jmeter 不能产生足够数量的并发用户数,需要使用分布式来创建足够数量的并发用户数,但是,现实中,我们可能又不能获得足够数量的电脑。

使用 docker 创建 jmeter 的助攻服务,这样就能实现,理论上一台电脑上创建出任意多个 jmeter 助攻服务,产生出足够量的并发用户数。另外,在助攻机的维护上,也变的更加简单,因为所有的助攻机容器都是基于相同的镜像创建,理论上,所有容器都是一样。

  1. 下载【slave-jmeter-docker】文件夹中所有文件

  2. 构建本地 slave 镜像:sh build.sh

  3. 创建 slave 容器

    docker run -itd --name slave1 nmb/jmeter-slave:5.1.1 server

    重复执行时,修改容器名称name值,则可创建多个slave容器

默认 jmeter 版本为 5.1.1

如果想要更改为其他版本,依次修改:Dockerfile、build.sh 文件中的版本号 5.1.1

注意:

1、该镜像中,加入 jpgc 插件,更改了 HTML 报告模板

2、请不要指定为低于 5 的版本,低于 5,生产的 HTML 报告可能有问题

3、助攻服务端口 1099, 5000, 因为后面 master 用 link 连接容器,所以,可以不用映射端口

想要创建多个 slave 容器,只需要修改创建容器命令中的指定的容器名称。

每个助攻服务的端口都是 1099 和 5000,如果直接映射到宿主机上,肯定会出现端口冲突的情况,所以,我们用 master 连接 link 每个 slave 容器,就不用担心端口冲突问题了。

创建分布式 jmeter 容器(master)

  1. 下载【master-jmeter-docker】文件夹中所有文件
  2. 构建本地 master 镜像:sh build.sh
  3. 修改 run-master.sh 文件中 --link 的数量和名称

冒号前面为 slave 容器名称,冒号后面为自定义别名

  1. 使用 master 容器执行分布式脚本

    sh run-master.sh -n \

    -R 助攻机别名(多个时用逗号分隔) \

    -t YouJMXfile \

    -l YouJTL_date +%Y%m%d_%H%M%S.jtl \

    -j jmeter.log \

    -e -o report_date +%Y%m%d_%H%M%S

默认 jmeter 版本为 5.1.1

如果想要更改为其他版本,依次修改:Dockerfile、build.sh 文件中的版本号 5.1.1

注意: 请不要指定为低于 5 的版本,低于 5,生产的 HTML 报告可能有问题

注意:

  • 该镜像构建成功后,会带有 jpgc 插件,可以执行使用 jpgc 插件编写的脚本
  • 该镜像还对 jmeter 生产的 HTML 报告进行了改造,生产的报告将转换为中文
  • jmeter 分布式,主控和助攻机的 jmeter 必须一致,所以,master 和 slave 的 jmeter 版本务必一致

好了使用 docker 来创建 jmeter 进行性能测试的技术,已经讲完了,代码已经开源到 gitee, 如果你觉得有用,请帮忙点个 star 噢!

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

8小时传疯!大厂面试真题全被大佬整理在这个小程序上了!【软件测试,建议收藏】

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础 

  全套资料获取方式:点击下方小卡片自行领取即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/125250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel技巧

excel技巧 🍓选中🍓填充🍓日期🍒🍒 日期快捷方式🍒🍒 日期计算🍒🍒时间相减 🍓求和🍓去除小数点🍓美化表格🍒&#x1f352…

Spring Cloud 之RabbitMQ的学习【详细】

服务通信 分布式系统通信两种方式: 直接远程调用(同步)借助第三方间接通信(异步) 同步通讯的问题 Feign就属于同步通讯。存在的如下问题 耦合度高,每次添加新的模块就要修改原有模块的代码性能下降&am…

[论文阅读]Voxel R-CNN——迈向高性能基于体素的3D目标检测

Voxel R-CNN Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection 迈向高性能基于体素的3D目标检测 论文网址:Voxel R-CNN 论文代码:Voxel R-CNN 简读论文 该论文提出了 Voxel R-CNN,这是一种基于体素的高性能 3D 对象…

Go 语言gin框架的web

节省时间与精力,更高效地打造稳定可靠的Web项目:基于Go语言和Gin框架的完善Web项目骨架。无需从零开始,直接利用这个骨架,快速搭建一个功能齐全、性能优异的Web应用。充分发挥Go语言和Gin框架的优势,轻松处理高并发、大…

Qt实现卡牌对对碰游戏

效果 闲来无事,实现一个对对碰游戏,卡牌样式是火影动漫。 先上效果: 卡牌对对碰_火影主题 玩法 启动游戏,进入第一关卡,所有卡牌都为未翻开状态,即背面朝上;点击卡牌,则将卡牌翻开…

jenkins工具系列 —— 删除Jenkins JOB后清理workspace

文章目录 问题现象分析解决思路脚本实现问题现象分析 Jenkins使用过程中,占用空间最大的两个位置: 1 、workspace: 工作空间,可以随便删除,删除后再次构建时间可能会比较长,因为要重新获取一些资源。 2 、job: 存放的是项目的配置、构建结果、日志等。不建议手动删除,…

双亲委派模式

双亲委派模型 双亲委派的工作过程 一个类加载器收到类加载的请求时,它不会马上加载该类,而是把这个请求委托给父加载器去完成,每一个层次的类加载器都是如此,因此所有的类加载请求都必须先通过启动类加载器尝试加载,只…

【快报】正在把教学视频搬运到B站和油管

hello 大家好,我是老戴。 熟悉我的同学知道,我从14年开始录制GIS相关的教学视频,之前是放到优酷上给大家下载,后期发现很多人把视频弄下来淘宝上卖,然后我就把视频整体放到了我自己的网站上。 随着视频录制的数量越来…

HBuilderX实现安卓真机调试

1. 简介 HBuilderX 简称 HX,HBuilder,H 是 HTML 的缩写,Builder 是建设者。是为前端开发者服务的通用 IDE,或者称为编辑器。与 vscode、sublime、webstorm 类似。 它可以开发普通 web 项目,也可以开发 DCloud 出品的 u…

nodejs+vue+python+php基于微信小程序的在线学习平台设计与实现-计算机毕业设计

困扰管理层的许多问题当中,在线学习也是不敢忽视的一块。但是管理好在线学习又面临很多麻烦需要解决,例如:如何在工作琐碎,记录繁多的情况下将在线学习的当前情况反应给课程问题管理员决策,等等。 流,开发一个在线学习平台小程序一方面的可能会更合乎时宜,另一方面来…

Java IDEA设置环境变量 以及代码获取

IDEA 设置环境变量 1.进入如图设置,一般的 java 程序和 spring Boot ,还是tomcat 都可以从这里进入 2.可以在如下地方手动添加 3. tomcat 类 4.spring boot 类 代码获取指定值 假定我设置如下 代码则如下获取(类均为JDK 自带类&…

代理模式代理模式

目录 1、使用场景 2、静态代理 3、动态代理 JDK动态代理 CGlib 动态代理实现 1、使用场景 使用代理模式主要有两个目的:一是保护目标对象,二是增强目标对象。 2、静态代理 NO.1 抽象接口:定义视频播放器接口Player public interface P…

http1,https,http2,http3总结

1.HTTP 当我们浏览网页时,地址栏中使用最多的多是https://开头的url,它与我们所学的http协议有什么区别? http协议又叫超文本传输协议,它是应用层中使用最多的协议, http与我们常说的socket有什么区别吗? …

怎么在电脑桌面上添加待办事项?

在电脑桌面上选择一款待办事项工具,可以高效率地督促各项任务的按时完成,大大地提高工作的效率,支持在电脑上安装待办事项的工具类型是比较多的,为更好的辅助日常办公,建议大家可以选择高效率辅助办公的电脑便签工具&a…

网络协议--TCP的未来和性能

24.1 引言 TCP已经在从1200 b/s的拨号SLIP链路到以太数据链路上运行了许多年。在80年代和90年代初期,以太网是运行TCP/IP最主要的数据链路方式。虽然TCP在比以太网速率高的环境(如T2电话线、FDDI及千兆比网络)中也能够正确运行,但…

高并发和存储之间的关系是什么?

文章目录 🔊博主介绍🤖博主的简介📥博主的目标 🥤本文内容🍊 一、高并发对存储的压力🍊 二、存储的性能和可扩展性 📢总结 🔊博主介绍 📕我是廖志伟,一名Java…

[Unity+智谱AI开放平台]调用ChatGLM Tuobo模型驱动AI小姐姐数字人

1.简述 本篇文章主要介绍一下,在Unity端,集成智谱AI开放平台提供的chatglm模型api,实现AI聊天互动相关的功能。从智谱AI官方站点上看到,提供有chatglm turbo的公共模型服务,能够实现32K超长上下文,应用到我…

Spring Security 6.1.x 系列(3)—— 基于过滤器的基础原理(二)

四、SecurityFilterChain 在Serlvet中,一组Security Filter组成SecurityFilterChain,SecurityFilterChain的概念就比较好理解,是Spring Security 提供的过滤器链,用于管理本身所有的过滤器,在上面的流程图中已有说明。…

【嵌入式】Linux C编程——C要注意的东西

1、语法分析中的“贪心法”: 编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分&…

Lvs+Nginx+NDS

什么是?为什么?需要负载均衡 一个网站在创建初期,一般来说都是只有一台服务器对用户提供服务 ​ 从图里可以看出,用户经过互联网直接连接了后端服务器,如果这台服务器什么时候突然 GG 了,用户将无法访问这…