12_jmeter 5.0分布式压测环境部署

jmeter在做压测的时候有时候会因为并发需求大,一台机器内存不足以支撑而需要进行分布式压测!下面记录的是我怎么部署的过程

条件:
① jmeter 5.0
② jdk 1.8
③ 一台Windows、一台linux 或者两台linux服务器

1. 在部署jmeter分布式的时候,请先确认一下你的负载机(发送脚本和搜集数据的服务器)和执行器(执行压测服务器)在不在同一个网段上!

2. 调度机和执行机都安装相同的JDK,配置java环境变量(网上教程一大把)

注意:我是关闭了防火墙的,不知道不关有没有影响,没有尝试过

命令 解释
service iptables status 查询防火墙状态
chkconfig iptables on 开启防火墙/重启后永久性生效
chkconfig iptables off 关闭防火墙/重启后永久性生效
service iptables start 开启防火墙/即时生效,重启后失效(即重启后防火墙自动开启)
service iptables stop 关闭防火墙/即时生效,重启后失效(即重启后防火墙自动开启)

3.执行机配置

先配置好jdk和jmeter的环境变量(Linux配置jdk和jmeter环境变量自行百度),并在控制台中输入java -versionjmeter -v 出现以下结果

12_jmeter 5.0分布式压测环境部署_第1张图片
  • 在Windows下双击japache-jmeter-5.0\bin下的create-rmi-keystore.bat
12_jmeter 5.0分布式压测环境部署_第2张图片
  • 按提示随便写入响应的内容,内容无意义随便写,输入y后回车,然后会提示你信息保持一样就再次回车就OK了
12_jmeter 5.0分布式压测环境部署_第3张图片
  • 然后可以看见bin下生成了一个rmi_keystore.jks文件(prowxyserver.jks 是干啥的我不知道,我也不知道咋出来的,后面我给删除了,新下载的包应该是没有的)
12_jmeter 5.0分布式压测环境部署_第4张图片
  • 修改jmeter.properties文件,server.rmi.ssl.disable=false需要开启并改成true
12_jmeter 5.0分布式压测环境部署_第5张图片
  • 然后把这个jmeter.properties文件和生成的rmi_keystore.jks文件拷到对应的执行机的bin下进行替换

4. 负载机的配置

  • 在上面的基础上,Windows下的负载机继续打开jmeter.properties文件,remote_hosts后面添加远程的执行机的ip

格式:remote_hosts=save1ip,save2ip(有几个save机就添加几个ip)注意:server_port可以不打开,默认就是1099

12_jmeter 5.0分布式压测环境部署_第6张图片

5. 执行机在jmeter/bin下启动服务./jmeter-server,如下图启动成功

6. 负载机启动jmeter.bat,远程调用执行机

12_jmeter 5.0分布式压测环境部署_第7张图片
  • 负载机执行情况
12_jmeter 5.0分布式压测环境部署_第8张图片
  • 执行机运行情况
12_jmeter 5.0分布式压测环境部署_第9张图片

到这里说明我们Windows做负载机,linux做执行机调用成功!

注意:如果遇到jmeter客户端在点击调用远程后就卡很久很久很久很久,执行机上运行情况

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.1.240:46936](local),objID:[1929906a:1686041725f:-7fff, 327233882577119679]]]
Starting the test on host 192.168.1.240 @ Fri Jan 18 17:24:44 CST 2019 (15478034                                                                                                                                                 84879)

这说明,你负载机调用执行机成功了,但是执行机返回执行结果的时候找不到负载机,

解决方法:

方案一:进入jmeter的bin目录下,按住shift点击鼠标右键,在此处打开窗口

12_jmeter 5.0分布式压测环境部署_第10张图片

执行jmeter -Djava.rmi.server.hostname=192.168.1.182(改成window负载机的ip,和linux一个网段的ip)

12_jmeter 5.0分布式压测环境部署_第11张图片

以这种方式打开jmeter,linux执行机就能找到负载机返回解决

方案二:修改jmeter.bat启动文件

找到bin目录下的jmeter.bat,编辑它

Jmeter4.0如果没有做过修改,默认是图里的配置

12_jmeter 5.0分布式压测环境部署_第12张图片

改为

代码如下:

set rmi_host=-Djava.rmi.server.hostname=192.168.1.182(改成window调度机的IP)

set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %rmi_host%

搞定了我们来看看原理

这种情况一般会出现在电脑里有多块网卡的情况

12_jmeter 5.0分布式压测环境部署_第13张图片

Windows调度机的jmeter启动的时候没有使用我们需要的网卡的ip,负载机找不到调度机,所以各种问题就出现了。

和执行机的jmeter配置:

打开jmeter/bin目录下的jmeter.properties文件进行编译
调度机配置:remote_hosts=save1ip,save2ip(有几个save机就添加几个ip)注意:server_port可以不打开

server.rmi.ssl.disable=false需要开启并改成true

执行机配置:jmeter.properties文件
server.rmi.ssl.disable=false需要开启并改成true

在执行的时候出现调用成功了,但是数据没有回调或者卡很久的状态,这说明你的执行机找不到调度机的ip,例如下:

解决方法:

修改master机的jmeter.bat启动文件
找到bin目录下的jmeter.bat,编辑它
Jmeter4.0如果没有做过修改,默认是图里的配置


12_jmeter 5.0分布式压测环境部署_第14张图片

改为


代码如下:
set rmi_host=-Djava.rmi.server.hostname=192.168.1.182(改成window调度机的IP)
set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %rmi_host%

7. Linux下负载机怎么执行多个调度机

把配置到的负载机的jmeter上传到一台Linux服务器上,配置好jdk和jmeter环境变量

我这里把执行的脚本xxx.jmx文件放在bin下的,bin下也有保存结果的reportdir文件夹,Linux中也是在bin下运行的脚本

linux中执行分布式命令为:
格式:jmeter -n -t 脚本 -R save1ip,save2ip -l 结果保存路径/结果文件名.jtl
实例:jmeter -n -t Steam_1_5_0.jmx -R 10.205.255.242,10.205.255.241 -l ./xxx/xxx.jtl

或者只需要在聚合报告里填写一个相对路径和结果文件名称.jtl,然后上传到linux的负载机,只要运行jmeter -n -t 脚本 -R save1ip,save2ip jmeter会按照写的路径给你保存结果

12_jmeter 5.0分布式压测环境部署_第15张图片

我脚本中只执行一次,可以看见我这次命令一共启动了两个执行机,请求共执行了两次!

12_jmeter 5.0分布式压测环境部署_第16张图片

你可能感兴趣的:(12_jmeter 5.0分布式压测环境部署)