利用 docker 实现JMeter分布式压测-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

为什么需要分布式

在工作中经常需要对一些关键接口做高QPS的压测JMeter是由Java 语言开发没创建一个线程虚拟用户JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并发。所以通过JMeter实现分布式可以整合多台主机的硬件资源实现同时对被测试接口进行压力测试。

在这里插入图片描述
Jmeter分布式测试环境中有两个角色Master 和 Slaves

  • Master节点向参与的Slaves节点发送测试脚本并聚合Agent节点的执行结果。

  • Slaves节点接收并执行Master节点发送过来的测试脚本并将执行结果返回给Master。

为什么要使用docker?

如果要分布式联动每台主机就要求每台主机都要有JMeter环境JDK + JMeter如果利用docker就可以通过docker管理 JMeter环境简单的拉取镜像启动容器即可。进一步讲利用k8s、云服务可以无限的扩容JMeter试压机理论上多少的并发用户都可以模拟。

准备工作

  • JDK启动 JMeter 工具需要
$ brew install openjdk@11
  • JMeter: 编写JMeter脚本
    https://archive.apache.org/dist/jmeter/binaries/

编写一个简单的脚本。

  • docker: 通过doker创建容器。
$ docker pull runcare/jmeter-master
$ docker pull runcare/jmeter-slave
  • 查看docker镜像
$ docker images

REPOSITORY              TAG        IMAGE ID       CREATED         SIZE
runcare/jmeter-master   latest     e052a8cd8680   3 years ago     326MB
runcare/jmeter-slave    latest     05c7ba96d97d   3 years ago     326MB

请记住 jmeter-master 的镜像ID e052a8cd8680后面会用到。

分布式压测使用

  • 启动 slave 节点。
    假设有两台主机可以启动两个slave。
$ docker run -it -d --name slave01 runcare/jmeter-slave
$ docker run -it -d --name slave02 runcare/jmeter-slave
  • 查看启动的容器
$ docker ps

CONTAINER ID   IMAGE                  COMMAND                   CREATED             STATUS             PORTS                 NAMES
b270636a7741   runcare/jmeter-slave   "/bin/sh -c 'jmeter-…"   43 seconds ago      Up 42 seconds      1099/tcp, 60001/tcp   slave01
2584c7fef5f8   runcare/jmeter-slave   "/bin/sh -c 'jmeter-…"   52 seconds ago      Up 50 seconds      1099/tcp, 60001/tcp   slave02
  • 发送压测脚本到 slave
$ result=`date +"%Y%m%d%H%M%S"` && docker run --rm -v /Users/fnngj/zhpro/script:/data e052a8cd8680 jmeter -n -t /data/baidu_script.jmx -l /data/$result.jtl -j /data/$result.log -e -o /data/$result -R 172.17.0.2,172.17.0.3

参数说明

result=date +“%Y%m%d%H%M%S”`: 指定测试结果的名称以当前日期时间命名。

/Users/fnngj/zhpro/script : 压测脚本的目录测试结果也会存放到该目录下。

baidu_script.jmx : 压测脚本的名称存放于 /Users/fnngj/zhpro/script目录下。

e052a8cd8680 : jmeter-master 的镜像ID。

172.17.0.2,172.17.0.3 两台 slave 的IP 地址。

测试结果

  • 执行完的目录
$ pwd
/Users/fnngj/zhpro/script

$ ls
20230707005328     20230707005328.jtl 20230707005328.log baidu_script.jmx
  • 查看报告

进入20230707005328 目录点击 index.html 文件可以看到压测的结果。


最后

如果你想学习自动化测试那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试学完即就业小白也能信手拈来拿走不谢允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料有需要直接领取就可以了


以上内容对于软件测试的朋友来说应该是最全面最完整的备战仓库了为了更好地整理每个模块我也参考了很多网上的优质博文和项目力求不漏掉每一个知识点很多朋友靠着这些内容进行复习拿到了BATJ等大厂的offer这个仓库也已经帮助了很多的软件测试的学习者希望也能帮助到你。

​​

​​​​

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker