简单唠一唠

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

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

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


JMeter分布式环境搭建

环境搭建 - 第一步:

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

  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

Copyright (c) 1999-2021 The Apache Software Foundation

环境搭建 - 第二步:

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

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

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

请注意 - 细节来了:

远程机操作配置:

  1. 首先在远程机器上,找到jmeter的安装路径,并在bin目录下找到jmeter.properties

  2. 打开jmeter.properties文件修改remote_hosts,把127.0.0.1修改成远程机的IPv4 地址
     

  3. 继续在jmeter.properties文件修改server.rmi.ssl.disable=true,这里是开启弃用秘钥,因为使用秘钥发现坑有些多。 

  4. 以上修改完成后,千万要记得保存。

  5. 保存完成后,启动cmd输入jmeter-server启动服务(如果运行命令起不来,那肯定是jmeter的环境变量配置错误,记得去检查下)。

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

  1. 控制机的配置操作同远程机是一样的,区别的是,控制机器的remote_hosts要配置远程机的IPv4 地址

  2. 如果你想把控制机也要当远程机使用,也在控制机(本机)启动cmd输入jmeter-server启动服务。


环境搭建 - 第三步:

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

控制机启动jmeterGUI页面,鼠标点运行->远程启动(英文: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%)
Tidying up remote @ Fri Mar 25 19:18:43 CST 2022 (1648207123594)
... end of run

参数解释:

  • -n是命令行模式
  • -t是指定jmeter脚本
  • -R是指定IPv4 地址,多个时使用英文逗号隔开
  • -l指定结果文件,后面跟文件存放路径
  • -e设置测试后完成报表
  • -o指定测试报表生成文件夹,后面跟文件夹路径,必须为空文件夹

命令行运行完成后,会在自定义的目录下存放测试的报告


踩坑问题及解决方法

问题一:控制机(本机)一定要ping一下远程机IPv4 地址

C:\Users\lifeng01>ping 10.11.29.987

如果ping不通,是肯定连接不上的,这时候要把控制机和远程机的防火墙关闭了

问题二:运行报系统找不到指定文件

  • 解决一:控制机(本机)jmeter安装路径中bin目录下找到create-rmi-keystore.bat点击运行,然后跟着提示输入即可,最后在bin目录下会生成rmi_keystore.jks文件,把这个文件复制到每一个远程机的bin目录下

  • 解决二:控制机(本机)和远程机在jmeter安装路径中bin目录下找到jmeter.properties文件,打开就找到注释掉的server.rmi.ssl.disable=false,去除注释并修改成server.rmi.ssl.disable=true,保存后,远程机在cmd中从新启动jmeter-server服务;如果控制机也想当远程机使用,也要从新启动jmeter-server服务。

问题三:如运行就报如下问

Error in rconfigure() method java.rmi.ConnectException: Connection refused to host: 192.169.232.89; nested exception is:
        java.net.ConnectException: Connection timed out: connect

这就是控制机调用远程机时识别了虚拟机IP,导致的错误。

解决方法就是把控制机和远程机,在控制面板\网络和 Internet\网络连接中心,禁用,只留下以太网


 

今天先聊到这里吧,以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的一键 3 连【 点赞、收藏、分享 】哟,谢谢!

未完成,待续……

一直在努力,希望你也是!

微信搜索公众号:就用python

Logo

更多推荐