news 2026/6/15 17:02:19

jmeter分布式压测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jmeter分布式压测

一、jmeter为什么要做分布式压测

jmeter本身的局限性
  • 一台压力机的 Jmeter 支持的线程数受限于 Jmeter 其本身的机制和硬件配置(内存、CPU等)是有限的

  • 由于 Jmeter 是 Java 应用,对 CPU 和内存的消耗较大,在需要模拟大量并发用户数时,单机很容易出现 JAVA 内存溢出的错误,导致测试脚本本身就有瓶颈

JVM 堆内存的局限性

Java 应用的 jvm 堆内存 heap 受压力机硬件限制,虽然我们可以调整堆内存大小

cmd 启用 Jmeter GUI 时,也会有提示

increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file

翻译:增加 Java 堆内存来满足测试的要求

但是单机无法支撑数以万计大并发,此时,需要多个压力机进行分布式压力测试,这样性能瓶颈就不会是我们的压力机了

联想场景
  • 测试 1000 线程并发的场景,但单机只能支持 200 并发无法达到1000

  • 通过分布式(5 台机器起)可以模拟 1000 并发

分布式压测

Jmeter 支持分布式压测,将需要模拟的大量并发用户数分发到多台压力机,使 Jmeter 拥有更大的负载量,满足真实业务场景(高并发场景)

分布式的最终目的
  • 确保压力机不会出现性能瓶颈

  • 在后面进行性能分析时,不需要考虑压力机是否会导致性能瓶颈的主要原因之一

二、分布式原理

把上面的动图完整看完,就懂了,原理如下:

  1. Cnotroller 是控制机,Slaves 是多个压力机

  2. 分布式测试中,Cnotroller 通过命令行将测试脚本分发给所有 Slave

  3. Slave 不需要启动 Jmeter GUI,通过 CLI 模式执行测试

  4. Slave 执行完后,会把结果回传给 Master

  5. Master 收集所有 Slave 的结果并汇总成一个结果集

注意

  • 压力机也可以叫:负载机、代理机、执行机、肉鸡....各种各样的名字,但他们都是 Slave

  • Master 也可以执行测试脚本,也可以不执行只负责管理

三、分布式压测的前提条件已经配置

  1. 注意事项

  2. 1、保持Contorller和Slave机器的JDK、jmeter以及插件等配置版本一致;

  3. 2、如果测试数据有用到CSV或者其他方式进行参数化,需要将data在每台Slave上复制一份,且读取路径必须保持一致;

  4. 3、确保Contorller和Salve机器在同一个子网里面;

  5. 4、检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会导致Slave机报错);

  6. 5、分布式测试中,通过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

  7. 6、如果并发较高,建议将Contorller机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉Contorller机的IP;

1、修改Contorller配置

打开Contorller机下jmeter安装文件下的bin目录:jmeter.properties文件,搜索remote_hosts=127.0.0.1,将Slave机的IP和端口写在后面,比如:

remote_hosts=127.0.0.1:1099,172.16.6.90:1099,172.16.6.91:1099

其中172.16.6.90和172.16.6.90为Slave机的IP,每个Agent机之间用英文半角逗号隔开,修改保存。注意默认端口都为1099

切记不论从主机器都要修改:server.rmi.ssl.disable=true,并且去掉#,否则会报错误

2、负载机
  1. 首先安装好jdk和jmeter环境,具体见我的上一篇文章。然后打开配置文件 /bin/jmeter.properties 找到并取消这段配置的注释 server.rmi.ssl.disable=false ,false改成true。

  1. # Password of Trust store

  2. #server.rmi.ssl.truststore.password=changeit

  3. #

  4. # Set this if you don't want to use SSL for RMI

  5. server.rmi.ssl.disable=true # 改成true

  1. 输入命令:jmeter-server -Djava.rmi.server.hostname=172.16.2.114 ,启动 anget 节点。jmeter-server 后面的参数指定 agent 的 IP

3、启动jemter

启动jmeter后,设置线程组、配置元件、取样器、监听器等原件,点击“运行-远程启动”:

可以选择远程启动一个Slave机,或者选择远程全部启动,即可进行分布式测试了。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:12:39

(仅限高级用户掌握)Open-AutoGLM语音自动化配置全流程泄露

第一章:Open-AutoGLM语音控制技术概述 Open-AutoGLM 是一种基于开源大语言模型(LLM)与自动语音识别(ASR)融合的智能语音控制框架,专为车载、智能家居和移动设备等场景设计。该技术通过深度集成自然语言理解…

作者头像 李华
网站建设 2026/6/15 15:03:26

2025专科生必看!9款AI论文工具测评:开题报告文献综述神器推荐

2025专科生必看!9款AI论文工具测评:开题报告&文献综述神器推荐 2025年AI论文工具测评:为何值得一看? 随着人工智能技术的不断进步,AI论文工具已成为学术写作中不可或缺的辅助工具。对于专科生而言,撰写…

作者头像 李华
网站建设 2026/6/15 11:45:17

EasyGBS施工现场全方位视频监控解决方案

在当今快速发展的建筑行业中,施工现场的安全管理始终是重中之重。随着科技的进步,视频监控技术已经成为保障施工现场安全的重要手段之一。然而,传统的视频监控方式往往存在监控盲区、告警不准确等问题,难以满足施工现场全方位、智…

作者头像 李华
网站建设 2026/6/15 11:46:17

Qt 中安全拼接文件路径

这段代码是 Qt 中安全拼接文件路径的核心写法,目的是把「可执行文件所在目录」和「配置文件名 fsjk_config.ini」拼接成一个完整、跨平台的绝对路径。代码完整上下文// 获取可执行文件所在目录(绝对路径) QString exeDir QCoreApplication::…

作者头像 李华
网站建设 2026/6/15 11:46:22

Open-AutoGLM vs manus,谁更胜一筹?8位CTO闭门会议中的内部评价流出

第一章:Open-AutoGLM vs manus,谁更胜一筹?8位CTO闭门会议中的内部评价流出在近期一场由8位头部科技企业CTO参与的闭门技术研讨会上,关于自动化代码生成工具的技术路线之争再度升温。焦点集中在开源项目 Open-AutoGLM 与商业解决方…

作者头像 李华
网站建设 2026/6/15 11:44:58

Open-AutoGLM内部运作揭秘:仅限内部流传的7个技术细节曝光

第一章:Open-AutoGLM实现原理Open-AutoGLM 是一个基于自监督学习与图神经网络(GNN)相结合的自动化文本到逻辑映射框架,旨在将自然语言描述自动转化为可执行的逻辑表达式或程序结构。其核心思想是通过构建语义依赖图,利…

作者头像 李华