用 docker 创建 jmeter 容器, 实现性能测试,该如何下手?

用 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路径下,执行

 
  1. sh jmeter.sh -n -t YouJMX_file \

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

  3. -j jmeter.log \

  4. -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文件
 
  1. sh jmeter.sh -n -t YouJMX_file \

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

  3. -j jmeter.log \

  4. -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容器
 
  1. docker run -itd --name slave1 nmb/jmeter-slave:5.1.1 server

  2. # 重复执行时,修改容器名称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容器执行分布式脚本
 
  1. sh run-master.sh -n \

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

  3. -t YouJMXfile \

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

  5. -j jmeter.log \

  6. -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噢!

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

如何规划面向未来的架构?

未来是指未来的业务,稳定性,成本 未来系统爆发的增长,这就是规划未来架构的目的 从两个方面入手:1.容量规划 2.底层架构 容量规划: 摸清家底: 各个模块日常应用水位以及历史峰值 99.9%压测 得出QPS vs RT …

Navicat破解 Navicat下载安装 附教程 免费

百度网盘:https://pan.baidu.com/s/1wRRN_18_uXxPiIWCS4l43A 麻烦各位师傅帮忙填写一下问卷,提取码在问卷填写结束后显示~ 【https://www.wjx.cn/vm/mBBTTKm.aspx# 】 (资料来源于网络,侵告删)

【护网资料】 应急响应 安全设备 告警分析 蓝中必看 HVV 护网行动

百度网盘:https://pan.baidu.com/s/1wDVamgkyXwP-yiWN4jPEGQ 麻烦各位师傅帮忙填写一下问卷,提取码在问卷填写结束后显示~ 【https://www.wjx.cn/vm/mBBTTKm.aspx# 】 (资料来源于网络,侵告删)

Linux 网络相关测试指令

1、连接网络后ping不通外网 1>ping不通外网IP,例如14.119.104.189 (www.baidu.com) route指令查看是否配置网关 添加网关 route add default gw 192.168.1.1 2>能ping通IP,但ping不通域名 添加DNS配置 /etc/resolv.conf 2、iptables NAT转换 ifconfig usb0 192.1…

【CTF笔记】 CTF web方向笔记分享 免费 附预览图

个人不怎么记东西,笔记不多,师傅们凑合看… 百度网盘:https://pan.baidu.com/s/1PspihUX28Y_AOQZPurHqKA 麻烦各位师傅帮忙填写一下问卷,提取码在问卷填写结束后显示~ 【https://www.wjx.cn/vm/mBBTTKm.aspx# 】 (…

重学SpringBoot3-路径匹配机制

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-路径匹配机制 AntPathMatcherPathPatternParser 和 PathPattern演示AntPathMatcher 示例PathPattern 示例性能和精确度的提升 选择使用哪一种 在 Spring…

现代 Android 开发的第一步Kotlin

Kotlin 入门教程:现代 Android 开发的第一步 引言 Kotlin,这门由 JetBrains 团队开发的现代编程语言,自 2011 年诞生以来,以其简洁、安全、实用的特性,迅速在 Android 开发社区中获得了广泛的认可。2017 年&#xff…

迷宫问题三种种解法(A*算法+BFS+双向广搜)

题目描述 小明置身于一个迷宫&#xff0c;请你帮小明找出从起点到终点的最短路程。 小明只能向上下左右四个方向移动。 输入格式 输入包含多组测试数据。输入的第一行是一个整数T&#xff0c;表示有T组测试数据。 每组输入的第一行是两个整数N和M&#xff08;1<N,M<100&a…

【LeetCode】升级打怪之路 Day 24:回溯算法的解题框架

今日题目&#xff1a; 46. 全排列51. N 皇后78. 子集 目录 LC 46. 全排列LC 51. N 皇后LC 78. 子集 【classic】1&#xff09;思路一2&#xff09;思路二 今天学习了回溯算法的解题框架&#xff1a;回溯算法解题套路框架 | labuladong 回溯算法的整体框架都是&#xff1a; re…

力扣L11--- 344.反转字符串(JAVA版)-2024年3月15日

1.题目 2.知识点 交换两个变量值的代码 char temps[left];//temp为暂时的变量&#xff0c;left是左指针&#xff0c;将left暂时存储在temp里面s[left]s[right];//将右指针的值赋给左指针s[right]temp;//将temp的值给右指针left;//左指针向左移动right--;//右指针向右移动3.代码…

Nginx高级技术: 地址重写 Rewrite和应用场景

一、rewrite 场景示例说明 1、基于客户端指定 IP 访问跳转 应用场景说明&#xff1a;指定的 IP地址能正常访问192.168.179.10访问正常。 Rewrite配置如下&#xff1a; vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name www.old.com; …

【嵌入式DIY实例】-最大功率点跟踪 (MPPT) 太阳能充电控制器

最大功率点跟踪 (MPPT) 太阳能充电控制器 文章目录 最大功率点跟踪 (MPPT) 太阳能充电控制器1、应用介绍2、硬件准备3、太阳能充电控制器介绍4、硬件设计5、驱动代码实现1、应用介绍 在这个应用中,我们将使用 Arduino 并结合许多主动-被动电子设备构建我们自己的 MPPT 太阳能…

2024年【广东省安全员C证第四批(专职安全生产管理人员)】考试总结及广东省安全员C证第四批(专职安全生产管理人员)模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 广东省安全员C证第四批&#xff08;专职安全生产管理人员&#xff09;考试总结是安全生产模拟考试一点通总题库中生成的一套广东省安全员C证第四批&#xff08;专职安全生产管理人员&#xff09;模拟试题&#xff0c;…

【ShenYu源码阅读】支持提醒通知设计,来看看开源贡献者都做了什么

相信大家碰到源码时经常无从下手&#x1f643;&#xff0c;不知道从哪开始阅读&#xff0c;面对大量代码晕头转向&#xff0c;索性就读不下去了&#xff0c;又浪费了一次提升自己的机会&#x1f62d;。 我认为有一种方法&#xff0c;可以解决大家的困扰&#xff01;那就是通过阅…

修复ElementUI中el-select与el-option无法通过v-model实现数据双向绑定的问题

1. 问题描述 需求&#xff1a;在使用ElementUI时&#xff0c;通过el-select和el-option标签实现下拉列表功能&#xff0c;当el-option中的选项被选中时&#xff0c;被选中的选项可以正确回显到已选择的列表中。 对于上面的下拉列表&#xff0c;当我们选中“超级管理员”的选项…

跨境电商应该用什么样的服务器?多大带宽?

跨境电商在选择服务器 和带宽时&#xff0c;需要考虑多个因素&#xff0c;包括业务规模、用户数量、网站流量、地理位置等。下面是一些关键考虑因素&#xff1a; 1、服务器类型 跨境电商通常会选择使用云服务器&#xff0c;因为云服务器具有灵活性、可扩展性和高可用性。云服务…

中国人民银行修订发布《征信投诉办理规程》

近年来&#xff0c;我国征信市场快速发展,征信业务覆盖主体持续增多、征信服务应用场景日益多元&#xff0c;征信权益保护工作面临新形势新任务。为更好地保障信息主体合法权益&#xff0c;推动我国征信业高质量发展&#xff0c;近日&#xff0c;中国人民银行修订发布《征信投诉…

算法训练营day48,动态规划16

package main func max(a, b int) int { if a > b { return a } return b } //647. 回文子串 func countSubstrings(s string) int { n : len(s) dp : make([][]bool, n) for i : 0; i < n; i { dp[i] make([]bool, n) } num : 0 for i : n - 1; i > 0; i-- { for…

SpringBoot原理解析

目录 依赖管理父项目依赖starter场景启动器 自动配置 Bean 和Component 的区别&#xff1a; 容器功能注解 简化开发web场景开发请求处理响应请求 thymeleaf视图解析原理流程 HandlerInterceptor拦截器文件上传异常处理错误处理默认规则定制错误处理逻辑异常处理自动配置异常处理…

微信分销商城小程序开发定制价格解析

在互联网时代&#xff0c;电子商务的飞速发展使得微信分销商城小程序成为消费者购物体验的一大利器&#xff0c;同时也为企业带来了更多的商业机遇。那么&#xff0c;微信分销商城小程序开发定制的价格究竟是多少呢&#xff1f;这个问题需要从多个方面来加以考虑。首先&#xf…