Jmeter分布式压测(二)

一、分布式压测优点

  • 单机发出的压力能力有限
  • 被压测系统没到瓶颈之前,发压机难免先发生资源不足的情形
  • 分散部署多个JMeter Agent,将压测脚本远程运行在它们身上,共同实
    施压测
  • 人多力量大

二、分布式压测系统架构

image-20200201181833156

三、分布式压测系统搭建

1、搭建步骤
  • 确定Master控制机器和Agent远程机器都已经配置好JAVA环境,并安装好Jmeter;
  • 确定JMeter 控制节点与 Agent节点的运行位置;
  • 控制节点与Agent节点之间的网络通信保持畅通;
  • 防火墙 – 关闭 或者 设定开放具体端口;
  • 确定各节点的IP与JMeter启动后需要占用的端口号
  • 启动Agent 节点的远程监听模式
  • 配置控制节点的jmeter.properties
2、配置Agent远程主机的Jmeter

进入jmeter安装目录bin文件下,找到jmeter.properties文件

[root@localhost bin]# cd /usr/local/jmeter/apache-jmeter-5.2.1/bin
[root@localhost bin]# ls
ApacheJMeter.jar          examples       jmeter.log          jmeter-server.log  mirror-server.cmd           stoptest.cmd        user.properties
BeanShellAssertion.bshrc  hc.parameters  jmeter-n.cmd        jmeter.sh          mirror-server.sh            stoptest.sh         utility.groovy
BeanShellFunction.bshrc   heapdump.cmd   jmeter-n-r.cmd      jmeter-t.cmd       reportgenerator.properties  system.properties
BeanShellListeners.bshrc  heapdump.sh    jmeter.properties   jmeterw.cmd        report-template             templates
BeanShellSampler.bshrc    jaas.conf      jmeter.properties1  krb5.conf          saveservice.properties      threaddump.cmd
create-rmi-keystore.bat   jmeter         jmeter-server       log4j2.xml         shutdown.cmd                threaddump.sh
create-rmi-keystore.sh    jmeter.bat     jmeter-server.bat   mirror-server      shutdown.sh                 upgrade.properties

修改jmeter.properties文件配置,修改如下所示:

[root@localhost bin]# vi jmeter.properties

注意,在修改jmeter.properties文件时,请做好备份工作,避免修改错误后无法还原。

[root@localhost bin]# cp jmeter.properties jmeter.properties_20200201
  • 修改remote_hosts=192.168.31.5:1099,其中192.168.31.5为Agent远程主机IP地址,1099为默认端口,此端口可以自行修改。

image-20200201215938112

  • 将server.rmi.ssl.disable=false,改为server.rmi.ssl.disable=true,并去掉注释(#)

image-20200201215946637

3、配置Master主机中的Jmeter

实例为两台Agent主机(linux),一台Master控制机(windows10)。

首先,在Master主机中找到Jmeter安装目录

image-20200201221110646

用编辑器打开jmeter.properties文件,配置修改如下:

image-20200201220108189

修改remote_hosts=192.168.31.5:1099,192.168.31.6:1099,其中192.168.31.5和192.168.31.6为Agent远程主机IP地址,1099端口为Agent远程主机配置好的端口。

image-20200201220005487

4、启动Agent机器Jmeter
  • 在Agent机器上执行启动命令(默认端口1099):
[root@localhost ~]# cd /usr/local/jmeter/apache-jmeter-5.2.1/bin

[root@localhost bin]# ./jmeter-server -Djava.rmi.server.hostname=192.168.31.5
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.31.5:36228](local),objID:[-7012a52d:170011dad62:-7fff, 7679462634962469096]]]
  • 在Agent机器上执行启动命令(个性化设置端口):
[root@localhost bin]# ./jmeter-server -Djava.rmi.server.hostname=192.168.31.5 -Dserver_port=1098

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.31.5:45407](local),objID:[-232cd94a:170011f8482:-7fff, 7120332058853617423]]]

注意:若配置为非默认端口(1099)时,需要在Master主机和Agent主机jmeter.properties文件进行相应的配置,即改为remote_hosts=192.168.31.5:1098。

5、启动Master主机Jmeter

在Master主机中找到Jmeter安装目录,点击jmeter.bat,启动jmeter。

image-20200201222852766

点击Run,然后可以看到配置好的两台远程Agent主机

image-20200201222805487

6、测试配置是否正确

执行压测程序判断Master主机和Agent远程主机是否正常执行程序,并返回结果。

点击Remote Start All,查看运行情况。

image-20200201223152677

其中Agent主机提示信息:

[root@localhost bin]# ./jmeter-server -Djava.rmi.server.hostname=192.168.31.5

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.31.5:35317](local),objID:[-575b9ec:170012008a6:-7fff, -5363279659734136758]]]

Starting the test on host 192.168.31.5:1099 @ Sat Feb 01 22:32:28 CST 2020 (1580567548718)
Finished the test on host 192.168.31.5:1099 @ Sat Feb 01 22:32:30 CST 2020 (1580567550162)

[root@localhost bin]# ./jmeter-server -Djava.rmi.server.hostname=192.168.31.6

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.31.6:46347](local),objID:[d14046d:17002b8575a:-7fff, 4962803599531810442]]]

Starting the test on host 192.168.31.6:1099 @ Sun Feb 02 05:46:59 CST 2020 (1580593619825)
Finished the test on host 192.168.31.6:1099 @ Sun Feb 02 05:47:01 CST 2020 (1580593621210)

Master主机收到返回信息:

image-20200201223523509

7、结合监控系统压测

image-20200201224212454

image-20200201224121998

image-20200201224138796

image-20200201224147546

四、分布式静默压测

1、执行步骤描述
  • 运行JMeter静默压测,不用启动GUI

  • 支持远程分布式压测

  • 首先保证所有agent都已经启动

  • 运行静默分布式压测命令:

    jmeter -n -r -t <jmx_file> -l <jtl_log>
    
  • 看监控页面,等待结束

  • 结果记录导入看测试报告

2、静默压测实战

由于没有在windows系统中配置Jmeter环境变量,所无法直接使用jmeter命名,所以需要先进入Jmeter安装目录bin目录下,然后执行jmeter命令,并且需要把baidu.jmx文件拷贝到bin目录下。

jmeter -n -t baidu.jmx -r -l baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport

参数说明:

    -n : 非GUI 模式执行JMeter

    -t : 执行测试文件所在的位置及文件名

    -r : 远程将所有agent启动用在分布式测试场景下,不是分布式测试只是单点就不需要-r

    -l : 指定生成测试结果的保存文件, jtl 文件格式

    -e : 测试结束后,生成测试报告

    -o : 指定测试报告的存放位置

    -o 指定的文件及文件夹,必须不存在 ,否则执行会失败,对应上面的命令就是resultReport文件夹必须不存在否则报错

其中baidu.jmx为脚本文件,baidu_requests_results.jtl为生成的结果文件。

执行结果如下:

image-20200201225129176

image-20200201230022171

五、附录

在配置过程中可能会碰到很多的坑,具体可以参考:https://www.cnblogs.com/wuzm/p/10926535.html

posted @ 2020-02-25 20:54  xyztank  阅读(295)  评论(0编辑  收藏  举报