使用Jmeter实现分布式负载

分布式意义:在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式负载执行测试

一、Jmeter分布式执行原理
1. Jmeter分布式测试时,选择其中一台作为调度机(master/Controller),其它机器做为执行机(slave/Agent)
2. 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的
3. 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总
4. 分布式测试原理:如下图

二、执行机(slave)配置
1. slave机上需要安装Jmeter,使用rz命令上传jmeter压缩文件,然后解压

2. 默认一般给的用户不是管理员,则修改用户环境变量即可:
vi ~/.bashrc ,在文件末尾添加该行 export PATH=$PATH:/home/mdrsopen/apache-jmeter-4.0-performance/bin ,此路径为jmeter的的路径,修改完毕,输入:wq退出,执行 source ~/.bashrc


3. 输入jmeter -v,出现下图证明配置成功

4. 进入jmeter的bin目录,修改jmeter-server文件,指定主机ip

5. 去掉RMI_HOST_DEF前面的#,末尾的XX改成当前主机ip

6. 可以对负载机端口进行修改,默认为1099,也可以修改成自己需要的端口,修改完毕,输入:wq退出
7. 输入./jmeter-server启动负载机,出现如下界面,证明启动成功
8. 多台slave的话,重复1~5步骤就好
9. 如果脚本中调用了参数文件,或者其它上传图片等,都需要将文件放到slave节点bin目录下,本次由于是用的相对路径格式为…/data/id.xls,则只需要手动在bin目录的上一个层级创建一个data文件夹,然后把参数文件放到该文件下即可


三、调度机(master)配置
1. 脚本:一个devops平台的查询接口
2. 找到Jmeter的bin目录下jmeter.properties文件,修改如下配置,IP和Port是slave机的IP以及自定义的端口(负载机端口有一台自定义为1234,有一台默认为1099):remote_hosts=10.16.69.174:1234,10.16.18.21:1099
3. 多台slave之前用","隔开,我这配置了2台,可以看到标红的这个就是上面截图slave的IP和Port
4. 打开Jmeter,选择运行,有启动、远程启动、远程全部启动三个选项:

启动:就是启动当前master(调度机),把调度机当负载机单独执行
远程启动:可以选择执行需要的负载机
远程全部启动:顾名思义,就是启动所有的负载机


5. 选择远程启动–>10.16.18.21:1099

master结果,这里我只启动了10.16.18.21:1099这一台slave,所以只有一个结果(线程数和循环次数都是1):


6. slave控制台信息:

7. 选择远程启动–>远程全部启动:

master结果,全部启动,我配置了2台slave,所以有两次执行结果


四、调度机(master)使用命令执行分布式测试

widows环境执行
jmeter -n -t 监听设置.jmx -r -l log.jtl
参数说明 :
-n 告诉jmeter使用非GUI模式执行测试
-t 执行的测试脚本名
-r 远程执行 , 在Jmter.properties文件中指定的所有远程服务器
-l 结果文件,如果不写路径,则在执行目录生成

linux环境命令相同

五、其它说明:
1. 调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
2. 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
3. 执行机(slave)设置的端口,首先要保证未被占用,可以使用该命令进行查询,netstat -anp|grep 端口 如果查询为空则可以进行配置,如下

4. 查询有值,则代表该端口已经被占用,需要换一个端口
5. 启动slave机器的server服务报如下错误,则要看apache-jmeter-4.0\bin下的jmeter.properties文件是否开启server.rmi.ssl.disable=true,报错如下

默认为

需要改成


6. 启动master如果也报java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory),修改方法一致,需要查看jmeter.properties文件是否开启server.rmi.ssl.disable=true,报错如下

7. master执行日志显示执行请求数量为0

8. 查看jmeter-server.log日志,该日志路径在执行jmeter-serer命令启动slave节点的路径,如下图,启动路径在/apps下


由上图可知是由于CSV元件找不到相对路径导致执行报错,由于slave启动节点路径在/apps,所以需要把data参数文件放置在/apps上的一个层级,可以直接在jmeter/bin目录下启动slave节点,这样相对参数文件就在bin目录一个层级,具体见(二、执行机(slave)配置介绍)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建Jmeter分布式压测集群,您需要按照以下步骤进行配置: 1. 下载Jmeter安装包,并在所有机器上进行安装。 2. 配置调度机: a. 启动Jmeter-server.bat文件。 b. 在控制机上编写完测试脚本后,点击运行。 c. 确保调度机和执行机在同一局域网中。 3. 配置执行机: a. 打开Jmeter的安装目录中的bin目录下的Jmeter.properties文件。 b. 找到remote_hosts配置项,将其修改为执行机的IP地址和端口号。 c. 启动Jmeter-server.bat文件。 4. 执行压力测试: a. 在控制机上启动jmeter.bat文件。 b. 打开测试计划,配置相关参数,如请求的URL、线程数、持续时间等。 c. 运行测试计划。 这样,您就成功搭建了Jmeter分布式压测集群,多台机器将同时发起请求,以实现更高的并发量和负载测试能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Jmeter搭建分布式集群压测实战](https://blog.csdn.net/tiantianquan51/article/details/130576373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [linux下Jmeter分布式压测](https://download.csdn.net/download/weixin_38695159/14053948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值