用 docker 创建 jmeter 容器,能做性能测试?
我们都知道,jmeter 可以做接口测试,也可以用于性能测试,现在企业中性能测试也大多使用 jmeter。docker 是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到容器中,就可以构建出一个独立的运行环境。
所以,有人就想,能否把他们俩弄到一块来使用?
今天,我就来给大家讲讲如何结合起来使用。
首先,选择一个linux机器,安装docker
然后,访问gitee开源网站,搜索“nmb-jmeter-docker"找到这个项目
然后,把项目的所有代码git下来,上传到linux系统的/opt路径下
用 docker 创建 jmeter 容器(普通 jmeter)
进入 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
如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。
https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337
也可以把你的 jmx 文件上传到其他路径,在运行 jmeter.sh 命令时,指定 jmx 文件路径
这个命令和 jmeter 的 CLI 模式命令是一样的,cli 的相关参数也是可以使用。
创建增强型 jmeter 容器(jmeter 带插件)
-
下载【jpgc-jmeter-docker】文件夹中所有文件
-
构建本地镜像: sh build.sh
-
使用构建的镜像,运行 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 助攻服务,产生出足够量的并发用户数。另外,在助攻机的维护上,也变的更加简单,因为所有的助攻机容器都是基于相同的镜像创建,理论上,所有容器都是一样。
-
下载【slave-jmeter-docker】文件夹中所有文件
-
构建本地 slave 镜像: sh build.sh
-
创建 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)
-
下载【master-jmeter-docker】文件夹中所有文件
-
构建本地 master 镜像: sh build.sh
-
修改 run-master.sh 文件中 --link 的数量和名称
冒号前面为 slave 容器名称,冒号后面为自定义别名
-
使用 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, 如果你觉得有用,请帮忙点个 ZAN 噢!
相关文章:
用 docker 创建 jmeter 容器,能做性能测试?
我们都知道,jmeter 可以做接口测试,也可以用于性能测试,现在企业中性能测试也大多使用 jmeter。docker 是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到容器中,就可以构建出一个独立的…...
Token 失效退出至登录页面
目录 前端设置: 1. 在登录页面,调用登录的接口后,直接获取当前时间并保存在本地,类似保存token。 2. 在路由守卫 获取本机存储的时间戳,加15分钟与当前时间进行对比,如果大于当前时间说明token失效&…...
微服务系列(2)--注册中心
在博文:微服务系列(1)里我们提到过注册中心的概念,简单来说微服务注册中心是一个用于存储和管理微服务实例信息的组件,它提供了服务注册、服务发现、服务健康检查等功能,以确保微服务之间的稳定通信。在微服务架构中,各…...
VSCode使用CMake断点调试
在 VS Code 中使用 CMake 进行断点运行调试,需要进行以下步骤: 确保已在系统中安装了 CMake 和调试器(如 GDB)。 在项目根目录下创建一个名为 .vscode 的文件夹。 在项目根目录下创建一个名为 build 的文件夹,并在终…...
Python爬虫异常处理心得:应对网络故障和资源消耗
作为一名专业的爬虫代理,我知道在爬取数据的过程中,遇到网络故障和资源消耗问题是再正常不过了。今天,我将与大家分享一些关于如何处理这些异常情况的心得和技巧。不论你是在处理网络不稳定还是资源消耗过大的问题,这些技巧能够帮…...
【CSS】CSS 布局——常规流布局
<h1>基础文档流</h1><p>我是一个基本的块级元素。我的相邻块级元素在我的下方另起一行。</p><p>默认情况下,我们会占据父元素 100%的宽度,并且我们的高度与我们的子元素内容一样高。我们的总宽度和高度是我们的内容 内边距…...
flutter开发实战-实现左右来回移动的按钮引导动画效果
flutter开发实战-实现左右来回移动的按钮引导动画效果 最近开发过程中需要实现左右来回移动的按钮引导动画效果 一、动画 AnimationController用来控制一个或者多个动画的正向、反向、停止等相关动画操作。在默认情况下AnimationController是按照线性进行动画播放的。Animati…...
ROS实现自定义信息以及使用
常见的消息包 消息包定义一般如下👇 (1)创建包和依赖项 (2)在新建的qq_msgs的包新建msgs的文件夹,在该文件夹里面新建Carry.msg类型的文件。 其实,Carry.msg就是你自己定义的消息类型&am…...
初始C语言——详细讲解操作符以及操作符的易错点
系列文章目录 第一章 “C“浒传——初识C语言(更适合初学者体质哦!) 第二章 详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言——特别详细地介绍函数 第四章 初始C语言——详细地讲解数组的内容以及易错点 第五章 初始C语言—…...
论文写作常用词句积累
X 连接词 表目的To this end/Toward that endto do soto this aimso as toTo tackle these issuesfor the sake ofaiming to do表转折howeverNevertheless表递进moreverFurthermore表对比on the other hand/On the contraryAlternativelyas in the case ofwhereas表顺序in a f…...
伺服系统::编码器
一、主要分类 二、组成与原理 光电编码器 磁编码器:N-->磁感元件(0);S-->磁感元件(1)》脉冲 增量编码器的分辨率、倍频与细分技术 (99 封私信 / 81 条消息) 编码器有什么分类? - 知乎 (z…...
Git全栈体系(五)
第八章 IDEA 集成 GitHub 一、设置 GitHub 账号 如果出现 401 等情况连接不上的,是因为网络原因,可以使用以下方式连接: 然后去 GitHub 账户上设置 token。 点击生成 token。 复制红框中的字符串到 idea 中。 点击登录。 二、分享工程…...
spring-boot webservice的例子
webservice发布服务 源码下载地址 spring-boot-webservice例子资源-CSDN文库 webservice cilent调用 源码下载地址 spring-boot-clintwebservice调用服务的例子资源-CSDN文库...
第八章 SpringBoot @ConfigurationProperties配置绑定
原始做法:读取到文件内容,再进行bean的绑定 public static void readProperties(String propertiesPath) throws IOException {Properties pps new Properties();pps.load(MainApplication.class.getClassLoader().getResourceAsStream("applicat…...
【SpringBoot】88、SpringBoot中使用Undertow替代Tomcat容器
SpringBoot 中我们既可以使用 Tomcat 作为 Http 服务,也可以用 Undertow 来代替。Undertow 在高并发业务场景中,性能优于 Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下 Undertow,你会发现你的系统性能会得到很大的提升。 1、Tomcat 介绍 Tomcat是一个开源的Ja…...
java8 求和
1.BigDecimal求和 对象字段求和 List<Car> listnew ArrayList<>(); BigDecimal sumOfBigDecimals list.stream().filter(Objects::nonNull).filter(c -> c.getMiles() ! null).map(Car::getMiles).reduce(BigDecimal.ZERO, BigDecimal::add);BigDecimal集合求…...
手眼标定眼在手上
1、为什么要用手眼标定 参考手眼标定特别是眼在手上在网上的文章很多,但很多在实际中调试不通。在定位时候,往往希望相机能返回的是机械的世界坐标,而不是相机的的图像坐标。从而间接计算出相机坐标系与机械坐标世界坐标转换矩阵,…...
【数据结构】初始二叉树
满二叉树 每个结点都有左右子树的二叉树。 完全二叉树 从上到下、从左到右排列,不落下一个结点进行排列的二叉树。 二叉树的性质 第i层最多有2(i-1)个结点深度为k的二叉树最多有 2k-1 个结点因为一颗深度为k的满二叉树的结点有2k-1,即nk-1ÿ…...
创建和使用角色(RHCE)
题目: 创建和使用角色 根据下列要求,在 /home/curtis/ansible/roles 中创建名为 apache 的角色: httpd 软件包已安装,设为在系统启动时启用并启动 防火墙已启用并正在运行,并使用允许访问 Web 服务器的规则 模板文件 i…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
