首发于 就用python

jmeter:JMeter分布式部署及踩坑解决

简单唠一唠

最近要做性能测试了,主要是业务并发的测试

牵扯到大并发的话,一台 client 机器是会运行宕机的,今天就唠唠 jmeter 的分布式测试

本次是环境的搭建,踩坑纪实。下面进入正文部分


JMeter分布式环境搭建

环境搭建 - 第一步:

是要先在本机部署 java jmeter 的运行环境

  1. java 最好下载 jdk-8u321-windows-x64
  2. jmeter 下载新版即可,如果想保证稳定可退两个版本下载

上述两个环境搭建的搭建可以百度一下,教程特别多。环境搭建好以后,记得去验证下

java 环境验证, cmd 控制台输入以下命令:

  • java
C:\Users\lifeng>java
  • javac
C:\Users\lifeng>java
  • java -version
C:\Users\lifeng>java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

jmeter 环境验证, cmd 控制台输入以下命令:

  • jmeret -v
C:\Users\lifeng01>jmeter -v
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
 / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.4.3

环境搭建 - 第二步:

自己本机搭建完成后,要在远程机器上搭建环境了,如果没电脑,可用同事的电脑操作起来

远程机的 java jmeter 环境必须要和控制机(本机)的 java jmeter 版本一致,必须一致,必须一致,否则就会出现乱七八糟的问题。

远程机的的环境验证同控制机(本机)的的环境验证方法示一样的,是一样的,是一样的。

请注意 - 细节来了:

远程机操作配置:

  • 首先在远程机器上,找到 jmeter 的安装路径,并在 bin 目录下找到 jmeter.properties
  • 打开 jmeter.properties 文件修改 remote_hosts ,把 127.0.0.1 修改成远程机的 IPv4 地址
  • 继续在 jmeter.properties 文件修改 server.rmi.ssl.disable=true ,这里是开启弃用秘钥,因为使用秘钥发现坑有些多。
  • 以上修改完成后,千万要记得保存。
  • 保存完成后,启动 cmd 输入 jmeter-server 启动服务(如果运行命令起不来,那肯定是jmeter的环境变量配置错误,记得去检查下)。

控制机(本机)操作配置:

  • 控制机的配置操作同远程机是一样的,区别的是,控制机器的 remote_hosts 要配置远程机的 IPv4 地址
  • 如果你想把控制机也要当远程机使用,也在控制机(本机)启动 cmd 输入 jmeter-server 启动服务。

环境搭建 - 第三步:

以上控制机和远程机配置完成后开始运行

控制机启动 jmeter GUI页面,鼠标点 运行 -> 远程启动 (英文: Run -> Remote Start )处会显示设置的远程机的 IPv4 地址

运行分为两种,第一种是命令行输入命令运行,这种的更适用做性能测试;第二种是GUI的运行

  • 第一种 - GUI运行:鼠标点 运行 -> 远程启动所有 (英文: Run -> Remote Start All
  • 第二种 - 启动 cmd 输入命令运行
PS E:\git_dfwsgroup\jmScript> jmeter -n -t .\并发测试脚本.jmx -R 10.11.12.157,10.11.29.226,10.11.12.120 -l E:\git_dfwsgroup\jmScript\results\test.jtl -e -o E:\git_dfwsgroup\jmScript\results\report\
Creating summariser <summary>
Created the tree successfully using .\考试业务并发测试脚本.jmx
Configuring remote engine: 10.11.12.157
Configuring remote engine: 10.11.29.226
Configuring remote engine: 10.11.12.120
Starting distributed test with remote engines: [10.11.12.120, 10.11.12.157, 10.11.29.226] @ Fri Mar 25 19:18:40 CST 2022 (1648207120343)
Remote engines have been started:[10.11.12.120, 10.11.12.157, 10.11.29.226]
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary =      9 in 00:00:03 =    3.5/s Avg:   391 Min:     0 Max:  1453 Err:     2 (22.22%)