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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

element+vue 之图片放大器

1.安装插件 npm install vue-photo-zoom-pro2.main.js导入 // 放大镜 import VuePhotoZoomPro from vue-photo-zoom-pro Vue.use(VuePhotoZoomPro)3.页面使用 <vue-photo-zoom-pro:url"imgUrl":out-zoomer"true":scale"2"style"width:…

SQL-分页查询and语句执行顺序

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

基于Spring Task框架的定时任务处理

1.1 介绍 Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a;定时任务框架 作用&#xff1a;定时自动执行某段Java代码 应用场景&#xff1a; 1). 信用卡每月还款提醒 2). 银行贷款每月还款提醒 3). 火车…

轻松高效的PDF处理工具-Expert PDF for Mac/Win

在现代工作和学习中&#xff0c;PDF文件已经成为了一种常见的文件格式。无论是阅读电子书、编辑合同、制作演示文稿&#xff0c;还是分享报告&#xff0c;都可能会遇到PDF文件。然而&#xff0c;PDF文件的编辑和处理却常常给人带来了不便。为了解决这一问题&#xff0c;我们推荐…

Linux驱动(四)platform总线匹配过程

1、前言 在上一篇文章Linux驱动&#xff08;三&#xff09;platform总线驱动中讲解了platform的驱动框架&#xff0c;设备与驱动相匹配后会调用驱动的probe函数&#xff0c;设备与驱动的匹配则是platform总线中的match函数实现的&#xff0c;本文将详细讲解match函数的匹配过程…

PostgreSQL16中的新增功能:双向逻辑复制

在这篇博客中&#xff0c;我们将深入探讨Postgres 16中引入的一些更高级的新功能。为了更好地理解这些功能&#xff0c;读者应具备一些Linux、Postgres和SQL的基础知识&#xff0c;因为我们将深入探讨这些新功能并指导如何实现它们。 本博客以在Ubuntu 23.04上运行的PostgreSQL…

cmake 中的set用法

可以后面跟一串字符串 set — CMake 3.0.2 Documentation

ES6前端学习笔记

修正 ES6是ECMA为JavaScript制定的第6个标准版本&#xff0c;相关历史可查看此章节《ES6-ECMAScript6简介》。 标准委员会最终决定&#xff0c;标准在每年6月正式发布并作为当年的正式版本&#xff0c;接下来的时间里就在此版本的基础上进行改动&#xff0c;直到下一年6月草案…

2024 年1月12日最热CV论文:Distilling Vision-Language Models on Millions of Videos

谷歌研究新突破&#xff1a;Distilling VLM模型自动生成百万视频字幕&#xff0c;视频语言模型性能提升6%&#xff01; 引言&#xff1a;视频理解的挑战与机遇 在数字化时代&#xff0c;视频内容的爆炸式增长为计算机视觉和自然语言处理领域带来了前所未有的挑战与机遇。视频…

仲晶同志简历

女&#xff0c;汉族。1972年出生&#xff0c;国防大学科技与装备教研室教官。1992年&#xff0c;仲晶毕业于军事气象学院&#xff0c;1996年成为国防大学国防科技发展战略学硕士研究生&#xff0c;毕业后留校任教。曾出版过9部军事专著&#xff0c;先后发表学术论文100多万字。…

电动机智能综合保护器在煤矿内的应用分析——安科瑞赵嘉敏

摘要 &#xff1a;介绍了矿用电动机智能综合保护器系统的总体结构&#xff0c;采用直接将交流信号整流、滤波、调理、采样的方式变为微控制器能够识别的直流信号&#xff0c;通过对微控制器采集到的直流信号编程判断来实现对电动机的相关保护控制、故障显示与报警以及与上位机的…

Blazor 错误笔记

1. 运行时问题 Microsoft.NETCore.App.Runtime.Mono.browser-wasm Microsoft.NETCore.App.Runtime.Mono.browser-wasm 是一个 .NET Core 运行时的包&#xff0c;用于在浏览器中运行 .NET Core 应用程序。它是针对 WebAssembly 架构的 .NET Core 运行时&#xff0c;可以在浏览…

云服务器ECS_GPU云服务器_AIGC_弹性计算-阿里云

阿里云高性能云服务器60%单实例最大性能提升&#xff0c;35Gbps内网带宽&#xff0c;网络增强&通用型云服务器、本地SSD型云服务器、大数据型云服务器、GPU异构型云服务器&#xff0c;阿里云百科aliyunbaike.com分享阿里云高性能云服务器&#xff1a; 阿里云高性能云服务器…

java项目之家政服务中介网(ssm)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的家政服务中介网。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 管理员&#xff1a;首页、个人中…

[redis] redis高可用之持久化

一、Redis 高可用的相关知识 1.1 什么是高可用 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;…

网络传输(TCP)

前言 我们tcpdump抓包时会看到除报文数据外&#xff0c;前面还有一段其他的数据&#xff0c;这段数据分为两部分&#xff0c;ip包头&#xff08;一般20字节&#xff09;和tcp包头&#xff08;一般20字节&#xff09;&#xff0c;一般这两个头长度和为40&#xff0c;我们直接跳…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

TMC2226步进电机驱动---学习记录

基于TMC2226数据手册的学习 主要内容介绍&#xff1a; Package Outline TMC2226 手册中引脚解释&#xff08;按照手册表格顺序&#xff09; 了解每个引脚是接什么的&#xff0c;之后看原理图 &#xff08;借用立创广场kirito的原理图&#xff0c;后期换个&#xff09; 以前的疑…

如何将后端带过来的字符串通过‘,’号作为判断依据,分割字符串然后生成数组

在实际开发工程中我们会遇到我们调用后端接口获取图片、文件、视频甚至选择的对象时&#xff0c;如果是这样的&#xff1a; 这种数据类型如果想渲染在html中的话就会很麻烦&#xff0c;我们可以通过","号为切割点将它放入数组中&#xff0c;通过列表进行渲染 由于实…

C#,入门教程(14)——字符串与其他数据类型的转换

上一篇&#xff1a; C#&#xff0c;入门教程(13)——字符&#xff08;char&#xff09;及字符串&#xff08;string&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/123928151 数据只有可视化才能更好地体现其价值&#xff0c;因而 string 与 image…