jmeter分布式集群压测

server/2024/10/20 13:29:29/

目的:通过多台机器同时运行 性能压测 脚本,模拟更好的并发压力

简单点:就是一个人(控制机controler/调度机 master)做一个项目的时候,压力有点大,会导致结果不理想,这时候找几个人(执行机slaver)一起做,平均分配工作量 ,控制机只需要设置好需求,通知执行时间,最后看结果就行,其他都不用做。

master会在本地编辑好jmx压测脚本,执行时,master将jmx脚本发送至slave上,slaver执行时不需要启动jmeter,只需要把jmeter-sever.bat文件打开以非GUI形式执行;

slave执行完毕后将结果回传给master,并由master进行结果的汇总 

1.多个独立环境,运行jmeter

192.168.120.9 --- 运行jmeter,控制机

192.168.1.174 --- 运行jmeter-server 作为执行机

192.168.1.175--- 运行jmeter-server作为执行机


2.执行机 环境搭建

2.1 环境设置 

注意:控制机和执行机需要一致的地方

  • Jmeter版本一致
  • JDK版本一致
  • Jmeter插件一致
  • Jmeter脚本中文件路径要一致(特别注意csv路径,建议csv路径使用相对路径,放在脚本的同级目录)
关于分布式环境计数重复问题导致程序报错解决方案:Jmeter脚本添加csv文件控制,不同的SLAVE环境下存放不同的csv文件即可使用CSV+计数器控制不同Slave的重复问题。
  • 同一局域网,防火墙要开放端口

保持一致性的方法:直接压缩本地Jmeter包,然后上传到各个执行机进行解压

2.2 修改jmeter.properties

进入配置文件目录下

jmeter4.X之后controller机连接slave机,多了SSL身份验证环节,不想使用SSL,也可以进行关闭SLL,通过修改jmeter.properties(关闭RMI) 

内网压测禁用SSL,外网需要启动SSL,进行slave机和controller机身份验证

server.rmi.ssl.disable=true

命令行比较难找,如果可以直接操作电脑文件,可以直接在 jmeter.properties修改比较方便

 3. 控制机修改jmeter.properties

修改配置文件jmeter.properties

设置要连接的执行机 

4.密匙传给执行机

控制机生成密匙-执行机(负载机)授权-分布式才能正常实现 

1).接下来因为jmeter4.0版本及以上时,为了安全 分布式压测需要一个密匙才能正常实现


2).打开控制机的bin目录运行create-rmi-keystore.bat 

复制下面的指令 

 

keytool -genkey -keyalg RSA -alias rmi -keystore rmi_keystore.jks -storepass changeit -validity 7 -keysize 2048

3).找到jdk并进入jdk\bin目录

mac:

/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/bin

输入 b中复制的执行,且输入信息后,报错:keytool 错误: java.io.FileNotFoundException: rmi_keystore.jks (Permission denied)

权限的问题,增加sudo

4).完成后,会生成一个jks文件

5).然后将这个文件,复制粘贴给所有执行机中的jmeter\bin目录下面(Windows、linux同理) 

 

5. 运行

5.1 执行机启动

每个执行机都要启动 

./bin/jmeter-server -Djava.rmi.server.hostname::192.168.1.174
./bin/jmeter-server -Djava.rmi.server.hostname::192.168.1.175

如果提示权限问题,赋予权限chomd -R 777 xxxx 

5.2 控制机启动

1) GUI模式 

远程启动,选择执行机,如果都要执行,则选择“远程启动所有” 

2)非GUI模式

启动salve机执行脚本,并返回数据,同时生成聚合报告文件、日志等数据文件

jmeter -n -t 脚本名称.jmx -R 192.168.38.49,192.168.38.52,192.168.38.20 -l logfile.jtl -o testReport -j log -r -e

 

注意点:

如果执行 6000个线程数 :

  • 3 个执行机的话,线程数就设置2000;
  • 2 个执行机的话,线程数就设置 3000;
  • 1 个执行机的话,线程数就设置 6000.

更多问题 


http://www.ppmy.cn/server/40673.html

相关文章

Web安全:SQL注入之布尔盲注原理+步骤+实战操作

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等…

计算机视觉——基于改进UNet图像增强算法实现

1. 引言 在低光照条件下进行成像非常具有挑战性,因为光子计数低且存在噪声。高ISO可以用来增加亮度,但它也会放大噪声。后处理,如缩放或直方图拉伸可以应用,但这并不能解决由于光子计数低导致的低信噪比(SNR&#xff…

如何利用AI提高内容生产效率与AIGC典型案例分析

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

YOLOv5,YOLOv7改进之结合​SOCA

1.SOCA moudle结构图 2,YOLOv5,YOLOv7改进之结合​SOCA 1.配置common.py文件 #SOCA moudle 单幅图像超分辨率 class Covpool(Function):@staticmethoddef forward(ctx, input):x = inputbatchSize = x.data.shape[0]dim = x.data.shape[1]h = x.data.shape[2]w = x.data.sha…

Docker Dockerfile如何编写?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 1.指令说明 FROM,构建镜像基于哪个镜像 MAINTAINER,镜像维护者姓名或邮箱地址 RUN,构建镜像时运行的指令 CMD,运行容器时执…

Python-VBA函数之旅-sum函数

目录 一、sum函数的常见应用场景 二、sum函数使用注意事项 三、如何用好sum函数? 1、sum函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://myelsa1024.blog.csdn.net/ 一、sum函数的常…

【JavaEE】【1.3 Servlet】1.3.3 HttpServletRequest的应用

Http报文结构 请求报文 HTTP的请求报文由四部分组成(请求行请求头部空行请求体): 请求行(Request Line)①②③: ① 请求方法(Method):要执行的HTTP操作,…

安卓动态加载view

目录 前言一、addview1.1 addView 的重载方法1.2 在 LinearLayout 中的使用1.2.1 addView(View child)方法的分析:1.2.2 addView(View child, int index)方法的分析:1.2.3 小结 1.3 在 RelativeLayout 中的使用 二、addContentview2.1 测试 12.2 测试 22…