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

    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 助攻服务,产生出足够量的并发用户数。另外,在助攻机的维护上,也变的更加简单,因为所有的助攻机容器都是基于相同的镜像创建,理论上,所有容器都是一样。

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

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

    创建 slave 容器

    1. docker run -itd --name slave1 nmb/jmeter-slave:5.1.1 server
    2. # 重复执行时,修改容器名称name值,则可创建多个slave容器

    # 重复执行时,修改容器名称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, 如果你觉得有用,请帮忙点个 ZAN 噢!

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    在这里插入图片描述

    软件测试面试小程序

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

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

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

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

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!  

  • 相关阅读:
    Java中next()和nextLine()的区别(为什么nextLine()输入回车没显示)
    丝绸之路网络安全论坛成功举办,开源网安受邀分享软件供应链安全落地经验
    我在绑定微信账号时出现了问题,提示该微信已绑定其他账号
    TFN MIX5 500 手持式光谱仪 合金分析仪 便携式X荧光光谱仪 合金手持式光谱仪
    学习算法和数据结构的第15天
    pointnet和pointnet++点云分割和分类
    GitHub 最新发布的这份 Java 面试导图 + 面试手册,真不是吹的
    LLM大模型工程师面试经验宝典--基础版(2024.7月最新)
    springBoot整合redis使用介绍(详细案例)
    自动化测试框架设计原理详解
  • 原文地址:https://blog.csdn.net/2301_78276982/article/details/132638931