Jmeter分布式压测环境搭建

前言

近期接了个算法压测需求,要对线上部署的机器资源做算法基准测试,当cpu\gpu\内存等机器资源其中一项达到上限则压测终止。但实际压测过程中,单机的硬件资源是有限的(如CPU、内存、磁盘I/O和网络带宽),当单机达到性能极限时,通过分布式的多个节点同时发起请求可以产生更高的并发负载。

本文介绍使用非GUI模式启动压力测试的操作步骤。

准备工作

  1. 硬件资源:以一台master机器,两台slave机器为例, 需准备3台机器。
  2. 系统上的防火墙已关闭或打开了正确的端口。
  3. 所有客户端都在同一个子网上。
  4. 所有系统使用相同版本的Jmeter和Java。
  5. 确保压测脚本和Jmeter可以正确访问服务器。

系统准备就绪后,可以设置远程测试了。

PS:Jmeter的工作方式是一个空直接点在多个工作节点上启动测试;

术语

控制节点: 运行Jmeter的系统,用于控制测试

工作节点: 运行Jmeter-server的系统,从Master接收命令,并向目标系统发送请求(简单理解为执行测试计划)

目标: 计划进行压力测试的服务器

jmeter1:压测原理

压测过程

1. 更改配置文件

为方便使用,本教程尽量避免大范围更改配置文件

Master: 进入apache-jmeter-5.4.1/bin目录下,打开jmeter.properties

open jmeter.properties

禁用SSL/TLS:找到修改server.rmi.ssl.disable=true

这一步是为简化测试环境,减少加密解密带来的开销,提高测试效率。当测试完成后,需恢复SSL/TLS 的使用,确保生产环境中的通信安全。

Slave: 同Master

2.数据同步

压测脚本: java.jar 需放至压测机器的../apache-jmeter-5.4.1/lib/ext目录下

CSV文件: ..创建data目录,用于存放压测中用到的数据文件 ../data/XX.csv

压测数据: 可以为视频/图片任意数据,存放至 ../data/XX.mp4

3.开始测试

Slave启动jmeter-server

../apache-jmeter-5.4.1/bin下执行以下命令

jmeter -server -LDEBUG  -Djava.rmi.server.hostname=本机IP -j d:\jmeter.log -Duser.dir=D:\data

工作机器正确启动后

Master控制远程工作机器,执行压测命令

进入AI.jmx所在目录下,执行以下命令,开启压测

 jmeter -n -t AI.jmx -R slave1IP,slave2IP -l ./ret.jtl -e -o ./report -f -LDEBUG
备注

可开启远程主机和控制主机的资源活动监视器-性能,判断压测是否正常启动

常见的一些坑

  1. 通过修改配置文件,使master控制slave节点,修改的配置越多,越难恢复且遇到异常时,难排查
  2. 最好使用同一系统的slave机器压测,我最初使用一台MaxOS+Windows系统执行压测时,总是一个启动一个关闭,没排查到原因。