1.为什么使用Jmter分布式

  • Jmeter单个压力机不足以支撑比较大的压力,在需要并发比较高的场景时,则需要用到jmeter的分布式去实现高压力并发;
  • 一般单个压力机运行测试脚本cpu超过90%,则可以考虑采用分布式处理;

2.Jmeter分布式的基本原理:

3.jmeter分布式需要准备:

  • a. 一般我们需要准备至少三台压力机,一台作为master控制机(主要用来调度脚本和采集结果),两台或者多台作为slave执行机(主要用例执行实际的测试脚本,启动线程对被压系统施加压力并采集回传结果)
  • b.测试脚本,脚本放在主控机上即可

4.分布式配置:

a.master配置情况:

远程的也可以再命令行中直接指定


jmeter -n                                                                   # 指定通过命令行
-t /home/performance/scprits/performanceTestingdemo-csdb.jmx                # 指定脚本
-R 192.168.30.2:1099,192.168.30.3:1099,192.168.30.4:1099,192.168.30.5:1099  # 指定需要运行的从节点,结果采集到master中
-l test_results.jtl                                                         # 指定结果文件
-e -o /home/performance/results                                             # 指定报告路径
-J Threads=1000 -J Ramp=10 -J Duration=6000                                 # 指定线程组的运行参数 通过传参动态调正 线程数  启动时间  和 持续时长

在这里插入图片描述

jmeter安装目录的bin目录下,修改jmeter.properties文件的remote_hosts配置,如下图所示
在这里插入图片描述

注意:ip和port为需要控制的slave机器的ip和端口,1099为启动jmeter_server的默认端口,也可以按照实际slave端配置的情况使用

b.slave配置情况:

在这里插入图片描述
注意:端口的情况可以按需修改,如果不需要修改也可以直接注释,jmeter默认是自己注释的

5.启动slave端的jmeter_server

  • a.linux和windows启动对应的bat和shell

这里启动的时候会有两个常见的问题

1.jmeter_server脚本在系统的时候,会读取系统变量JMETER_HOME去启动应该的服务,系统未配置改变量会报错

在这里插入图片描述
解决方案:

  • 1.配置系统变量JAVA_HOME
  • 2.在jmeter_server.bat中set一个JAVA_HOME
2.ssl认证问题

报错信息:

java.rmi.server.ExportException: Listen failed on port: 0;

在这里插入图片描述

解决方案

  • 1.执行bin目录的create-rmi-keystore脚本生成rmi放到slave的bin目录中
    在这里插入图片描述
  • 2.注释调jmeter_properties配置中的ssl认证:server.rmi.ssl.disable=true
    在这里插入图片描述

运行报错问题

报错日志:
在这里插入图片描述
原因:这是服务器双网卡造成的问题
解决办法:

set rmi_host=-Djava.rmi.server.hostname=192.168.0.205

if not "%SERVER_PORT%" == "" goto port

call jmeter -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS% %rmi_host%
goto end

在这里插入图片描述

6.启动master主控机的jmeter运行

在这里插入图片描述
注意:如果你的脚本中有使用CSV Data Set Config原件,那么在master的脚本需要使用绝对路径;否则你会发现你的脚本是无法完成分布式驱动的

7.命令行驱动分布式

解析:-r 标识远程启动

jmeter -n -t D:\test\Business\test_performance.jmx -r -l test_results.jtl  -e -0 D:\resultTest

指定某个slave运行(-R):

jmeter -n -t D:\test\Business\test_performance.jmx -R 10.11.12.13:1099 -l test_results.jtl  -e -0 D:\resultTest
Logo

鸿蒙生态一站式服务平台。

更多推荐