Jmeter 分布式测试 详细教程

单台机器运行500个线程就基本到极限了,所以很多时候我们需要用到分布式执行方式。

1. 介绍

Jmeter的分布式执行方式,分为一台调度机和多台执行机。其中调度机保存测试脚本,远程启动时分发给所有执行机。而执行机执行的过程中会把请求结果实时传回给调度机。以达到分布式测试的目的。
以下图例中,以a机器作为调度机,a、b、c机器作为执行机进行测试。(机器紧张的情况下,a也可以充当执行机)
在这里插入图片描述
PS: 传输过程中会产生一定的损耗,所以不建议调度机参与执行。

2. 准备工作

2.1 执行机查到出ip地址

  1. 查询本机ip地址
    windows在cmd执行ipconfig。Linux在终端执行ifconfig可以查到本机的ip地址。
    在这里插入图片描述
    PS: 因为我这是A类地址,所以是10开头的,一般是C类地址192.168.x.x。

2.2 调度机修改配置文件

  1. 进入调度机上Jmeter程序路径,打开/bin/jmeter.properties 文件。
    在这里插入图片描述
  2. 找到remote_hosts这一行,填入所有执行机ip地址。(来自2.1 执行机查到出ip地址)
    在这里插入图片描述

3. 执行过程

3.1 执行机启动服务端

  1. 在每一台执行机上,进入Jmeter程序路径,启动\bin\jmeter-server.bat 文件。
    在这里插入图片描述
  2. 启动后是这样子的,这个终端不能关闭。红框中会显示本机IP地址。端口号在Jmeter4.0后是自动分配的。
    在这里插入图片描述

3.2 调度机远程启动所有执行机

  1. 在调度机上,运行Jmeter GUI界面。可以在运行-远程启动菜单看到配置文件中设定的执行机列表。
    在这里插入图片描述
  2. 我点了运行-远程全部启动,2个执行机各执行了一遍。
    执行过程中,调度机分发了.jmx脚本给了2台执行机,2台执行机执行过程中把执行结果传回给了调度机。
    在这里插入图片描述
  3. 如果远程执行成功的话,执行机上的jmeter-server.bat执行框会有内容更新
    在这里插入图片描述

4. 命令行进行远程启动

  1. 普通的命令行启动是这样的
    jmeter.bat -n -t 线程组.jmx -l test.jtl

  2. 带上生成报告是这样的
    jmeter.bat -n -t 线程组.jmx -l test.jtl -e -o Report

  3. 远程启动所有执行机,只需要加个 -r 参数即可
    jmeter.bat -n -t 线程组.jmx -r -l test.jtl
    在这里插入图片描述

  4. 执行完成后报告也是所有执行机的全部测试结果
    在这里插入图片描述

5. 可能遇到的问题

5.1 启动jmeter-server.bat报错

  1. Windows平台 执行机如果运行 jmeter-server.bat 遇到以下错误 java.io.FileNotFoundException: rmi_keystore.jks
    在这里插入图片描述
  2. 进入执行机上Jmeter程序路径,打开\bin\jmeter.properties 文件。
    找到#server.rmi.ssl.disable=false 这一行,改成true,记得把#去掉。
    在这里插入图片描述
  3. 调度机也需要修改为#server.rmi.ssl.disable=true,否则远程启动时会报相同错误。
    在这里插入图片描述

5.2 远程启动时报错

  1. 可能是你的调度机上执行的测试脚本中,含有执行机上没有的插件内容。
    譬如这个情况是调度机上有"bzm - Concurrency Thread Group"线程组,但执行机上没有这个插件。
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tomoya_chen/article/details/88850085
今日推荐