用 docker 创建 jmeter 容器, 实现性能测试,该如何下手?
创始人
2025-05-28 15:00:44

目录:导读

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

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

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

创建分布式jmeter容器(slave)

创建分布式jmeter容器(master)

写在最后


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

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

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

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

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

用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噢!

写在最后

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~

你也可以加入下方的的群聊去和同行大神交流切磋

 

相关内容

热门资讯

第一章:职场入门:程序员如何开... 作为一名Java程序员,我们深知在当今激烈的市场竞争中,如何开始职业生涯是至关重要的。本章将从多个方...
C语言:文件的读写(fputc... 近段时间,在重新学习一下C语言程序设计,学习到了文件读写这一章节,觉得这方面的知识较复杂,于是把其中...
清华大学土木工程系包含哪些专业... 今天给各位分享清华大学土木工程系包含哪些专业的知识,其中也会对清华大学土木工程系包含哪些专业课程进行...
秦国卫鞅怎么死的(卫鞅最后有没... 今天给各位分享秦国卫鞅怎么死的的知识,其中也会对卫鞅最后有没有娶秦国公主进行解释,如果能碰巧解决你现...
美利达车架号(美利达车架号能查... 今天给各位分享美利达车架号的知识,其中也会对美利达车架号能查出什么信息进行解释,如果能碰巧解决你现在...
马杀鸡什么意思(日语马杀鸡什么... 本篇文章极速百科给大家谈谈马杀鸡什么意思,以及日语马杀鸡什么意思对应的知识点,希望对各位有所帮助,不...
一次 JVM 类加载异常 文章目录1. JVM 类加载异常1. 出现问题2. 解决过程1. JDK 7 版本过老2. JDK ...
Button(按钮)与Imag... 今天给大家介绍的Android基本控件中的两个按钮控件,Button普通按钮和ImageButton...
vue子组件无法根据prop属... 问题描述 在vue中,有一个父组件和一个子组件,在父组件里有一个变量&#...
雪佛兰SPARK是什么车?SP... 今天给各位分享雪佛兰SPARK是什么车?SPARK现在还有卖吗的知识,其中也会对2020雪佛兰spa...
全世界最贵的跑车(全世界最贵的... 今天给各位分享全世界最贵的跑车的知识,其中也会对全世界最贵的跑车是啥进行解释,如果能碰巧解决你现在面...
e哥什么意思(e哥是谁啊) e... 今天给各位分享e哥什么意思的知识,其中也会对e哥是谁啊进行解释,如果能碰巧解决你现在面临的问题,别忘...
推荐国内十大品牌润滑油(国内知... 今天给各位分享推荐国内十大品牌润滑油的知识,其中也会对国内知名品牌润滑油进行解释,如果能碰巧解决你现...
前端性能优化之HTTP缓存 前端缓存 前端缓存可分为两大类:HTTP 缓存和浏览器缓存。 我们今天重点是 HTTP...
Linux 端口号占用如何处理 在Linux中,可以使用以下命令来查看端口号的占用情况: sudo ne...
再探pytorch的Datas... 本文从分类、检测、分割三大任务的角度来剖析pytorch得dataset和dataloader源码&...
电影最爱剧情详细介绍,最爱电影... 电影最爱剧情详细介绍目录电影最爱剧情详细介绍最爱电影剧情最爱这部电影讲述的是啥情节电影最爱剧情详细介...
公斤力什么单位(公斤力等于多少... 今天给各位分享公斤力什么单位的知识,其中也会对公斤力等于多少公斤进行解释,如果能碰巧解决你现在面临的...
汽车压缩比是什么意思(汽车压缩... 今天给各位分享汽车压缩比是什么意思的知识,其中也会对汽车压缩比的定义进行解释,如果能碰巧解决你现在面...
小巧实惠又时尚7款市场在售微型... 本篇文章极速百科给大家谈谈小巧实惠又时尚7款市场在售微型电动车,以及微型电动车推荐对应的知识点,希望...
cdn服务器搭建步骤 CDN服务器是现代网络中不可或缺的一部分,其可以大大提高网站的访问速度和用户体验。许多...
Go项目(分布式事务) 文章目录简介分布式事务CAPBASE常见方案 简介 目前,项目的主要代码已经开发完毕&...
leetcode每日一题:45... 系列:贪心算法 语言:java 题目来源:Leetcode...
差速器工作原理是什么(差速器工... 本篇文章极速百科给大家谈谈差速器工作原理是什么,以及差速器工作原理是什么意思对应的知识点,希望对各位...
幸福花园纤细的爱故事内容是什么... 幸福花园纤细的爱故事内容是什么 目录幸福花园纤细的爱故事内容是什么 幸福花园有几部求幸福花园的第二个...
hisuite是什么 ,HiS... hisuite是什么 目录hisuite是什么 HiSuite什么意思?honest是什么意思“hi...
烈火战车刘德华骑的摩托是什么车... 本篇文章极速百科给大家谈谈烈火战车刘德华骑的摩托是什么车是P3还是P4,以及烈火战车中刘德华骑的是什...
Linux命令·diff diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是...
2021蓝桥杯真题公约数(填空... 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果...
智能马桶杀菌以及光传感方案 智能马桶杀菌模组,安装在马桶改版底部,实现座垫区域消毒、池内消毒、臀洗喷...