基于docker实现JMeter分布式压测

这篇具有很好参考价值的文章主要介绍了基于docker实现JMeter分布式压测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于docker实现JMeter分布式压测,自动化测试,软件测试工程师,软件测试,jmeter,分布式,软件测试,自动化测试,功能测试,程序人生,职场发展

为什么需要分布式?

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

基于docker实现JMeter分布式压测,自动化测试,软件测试工程师,软件测试,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实现JMeter分布式压测,自动化测试,软件测试工程师,软件测试,jmeter,分布式,软件测试,自动化测试,功能测试,程序人生,职场发展

编写一个简单的脚本。

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 的IP 地址

$ docker inspect -f '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -q)

/slave01 => 172.17.0.3
/slave02 => 172.17.0.2
/k8s_nginx_nginx-deployment1-fc7586d97-jvjvk_nginx_4379ed7f-b0be-4f9f-a0a9-4a5fd7b45b38_1 => 
/k8s_nginx_nginx-deployment1-fc7586d97-bztbh_nginx_6968e6b1-6689-4f1a-a9ea-04532577841c_1 => 

发送压测脚本到 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 文件,可以看到压测的结果。

基于docker实现JMeter分布式压测,自动化测试,软件测试工程师,软件测试,jmeter,分布式,软件测试,自动化测试,功能测试,程序人生,职场发展

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

基于docker实现JMeter分布式压测,自动化测试,软件测试工程师,软件测试,jmeter,分布式,软件测试,自动化测试,功能测试,程序人生,职场发展

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   文章来源地址https://www.toymoban.com/news/detail-731279.html

到了这里,关于基于docker实现JMeter分布式压测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jmeter性能实战之分布式压测

    1、JMeter分布式测试时,选择其中一台作为调度机(master),其它机器作为执行机(slave)。 2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。 3、执行完成后,slave会把结果回传给master,m

    2024年02月07日
    浏览(30)
  • 分布式压测之locust和Jmeter的使用

    受限于单台机器的配置问题,我们在单台机器上达不到一个很高的压测并发数,那这个时候就需要 引入分布式压测 分布式压测原理: 一般通过局域网把不同测试计算机链接到一起,达到测试共享、分散操作、集中管理的目的。 选择一台作为调度机(MASTER),其他机器作为执

    2024年02月19日
    浏览(28)
  • 搭建Jmeter分布式压测与监控,轻松实践

    对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题;如果当前架构快达到性能瓶颈了,是横向扩容性能提升大,还是纵向扩容性能提升大。 如果需要了解这些

    2024年02月08日
    浏览(29)
  • 压力山大?搭建JMeter分布式压测环境轻松应对!

    目录 引言 windows环境部署 1.安装环境变量 2.配置环境变量 3.修改Jmeter配置文件 4.启动jmeter 5.启动分布式服务 Linux环境部署 1.安装JDK+Jmeter 2.环境优化 4.编写Jmeter脚本 5.启动Jmeter 6.停止Jmeter 7.打包查看测试报告 您想要提高您的应用程序的性能吗?想要确保它在高负载下仍然能够

    2024年02月07日
    浏览(31)
  • 【性能测试】分布式压测之locust和Jmeter的使用

    受限于单台机器的配置问题,我们在单台机器上达不到一个很高的压测并发数,那这个时候就需要 引入分布式压测 分布式压测原理: 一般通过局域网把不同测试计算机链接到一起,达到测试共享、分散操作、集中管理的目的。 选择一台作为调度机(MASTER),其他机器作为执

    2024年02月19日
    浏览(32)
  • 如何进行JMeter分布式压测?一个案例教你详细解读!

    目录 引言 一、什么是压力测试? 二、什么是分布式测试? 三、为什么要使用分布式压力测试? 四、主流压力测试工具对比 五、Jmeter分布式压测原理 六、Jmeter分布式压测前的准备工作 七、阿里云服务器上进行分布式压测 八、系统架构学习 当前快速发展的互联网应用领域,

    2024年02月08日
    浏览(47)
  • 一文2000字从0到1手把手教你jmeter分布式压测

    一台压力机的 Jmeter 支持的线程数受限于 Jmeter 其本身的机制和硬件配置(内存、CPU等)是有限的 由于 Jmeter 是 Java 应用, 对 CPU 和内存的消耗较大 ,在需要模拟大量并发用户数时,单机很 容易出现 JAVA 内存溢出的错误 ,导致测试脚本本身就有瓶颈 Java 应用的 jvm 堆内存 he

    2024年02月05日
    浏览(36)
  • 有手就会做!保姆级Jmeter分布式压测操作流程(图文并茂)

    保证本机和执行机的JDK和Jmeter版本一致 配置Jmeter环境变量 配置Jmeter配置文件 上传每个执行机服务jmeter chmod -R 755 apache-jmeter-5.1.1/ 执行机配置写自己的ip 控制机配置所有执行机ip,把server.rmi.ssl.disable改成true 将本机也作为压力机 启动jmeter-server.bat 执行机执行jmeter-server 打开控制

    2024年03月18日
    浏览(36)
  • 超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)

    性能脚本error报错问题排查 1、脚本运行过程中报错 1)在windows系统jmeter中,给测试脚本添加查看结果树,添加保存错误日志信息 第一步,给文件取名error.xml 第二步,仅错误日志 第三步,点击配置,全部勾选 2)把linux系统中保存的error日志文件,导入到windows系统jmeter查看结

    2024年02月07日
    浏览(42)
  • docker+jmeter实现简单的分布式压力测试

    阶梯压力测试的场景是为了验证在系统运行期间,用户不断的登录系统并使用一段时间,通过阶梯的场景,模拟实际应用期间系统的稳定性、承载性。 二、常用的阶梯压力测试线程组 stepping Thread Group 步长插件 Concurrency Thread Group 步长并发插件 两者区别 stg不提供设置启动延迟

    2024年04月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包