用Jmeter进行分布式压测

本文详细介绍了如何使用Jmeter进行分布式压测,包括在Linux环境下安装JDK和Jmeter,配置环境变量,编写并执行性能测试脚本,以及部署分布式环境。文章还涵盖了在分布式测试中可能遇到的问题及解决办法,如错误排查、防火墙配置等。
摘要由CSDN通过智能技术生成

一、准备安装包:

1、JDK

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

下载版本:

 

 

2、Jmeter

下载地址:http://jmeter.apache.org/download_jmeter.cgi

下载版本:

 

 

二、上传包到Linux系统中

Linux基本操作不做赘述,如图所示,上传包成功

 

 

三、安装JDK

1、安装程序一般放在/usr目录下,在该目录下新建java文件夹,将/home/aying目录下的安装包解压到java文件夹中

 

2、修改配置文件,设置环境变量,重启服务,查看安装是否成功。

Vi /etc/profile

 

export JAVA_HOME=/usr/java/1.8.0_231

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 

 

进入 /etc目录,输入命令source profile

 

查看安装是否成功

Java version "1.8.0_231"

Java™  SE Runtime Environment (build 1.8.0_231-bll)

Java HotSpot™  Client VM (bulid 25.231-bll,mixed mode)

 

四、安装jmeter

1、cd  /usr     #进入安装目录

2、cp /home/aying/apache-imeter-5.1.1.tgz .    # 复制安装文件到安装目录

3、tar -xvf apache-imeter-5.1.1.tgz   #解压安装文件

4、cd /usr/apache-imeter-5.1.1/bin   #进入解压包的bin目录

5、chomd  777 jmeter.sh*   #修改jmeter.sh文件的权限为777

6、sh  jmeter.sh -v  # 查看是否安装成功

7、配置环境变量vim /etc/profile,在文件中添加以下内容:(跟配置java环境变量步骤一样)

export JMETER_HOME=/usr//apache-jmeter-5.1.1

export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH

export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin

保存,退出。

5、source /etc/profile  #让配置文件实时生效

 

 

 

 

 

五、执行脚本(没有接口可以调用演示,所以此处直说步骤)

1、在本地windows系统下Jmeter的GUI界面编写性能测试脚本

2、将该脚本上传到linux系统中Jmeter解压包的bin目录中

3、进入bin目录执行命令sh jmeter.sh -n -t test.jmx -l /test.jtl  

4、去bin目录中查看生成test.jtl文件,下载文件到Windows系统中,在JMeter的 GUI 界面 -> 测试计划 -> 添加线程组 -> 添加聚合报告 -> 点击 "浏览..." 按钮找到你刚生成的 jtl 文件打开即可统计结果进行分析。

六、部署Jmeter分布式环境并配置(没有多台服务器演示,复制别人的步骤,原理和过程准确无误,照着配置,多尝试几次肯定成功)

      在使用Jmeter进行性能测试时,如果并发数比较大(如,需要支持1000个并发),单台机器的配置(CPU和内存)可能无法达到,这时可能使用jmeter提供的分布式测试功能,在测试之前需要完成以下前提条件:

    1)所有的客户端都在同一个子网上

    2)确保在所有系统上使用了相同版本的Jmeter和java

    3)脚本文件和参数化文件需要都放在一样的路径下面

    4)系统上的防护墙被关闭或者正确的端口/服务被打开

分布式测试原理图:

 

1、Jmeter分布式测试时,选择其中一台作为调度机(master/Controller),其它机器做为执行机(slave/Agent)。

2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,应该是通过命令行模式执行的。

3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

注意:

(1)每一台jmeter远程服务器(slave机器)都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划;

(2)采用JMeter远程模式并不会比独立运行相同数目的非GUI测试更耗费资源。但是,如果使用大量的JMeter远程服务器,可能会导致客户端过载,或者网络连接发生拥塞;

(3)默认情况下,master机器是不执行参与生成并发数据的;

(4)调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。

下面开始实施吧。

首先,按照前面安装jmeter的步骤,在其他linux上安装jdk和jmeter(jdk和jmeter的版本以及安装路径要保持一致,不然可能会出错,无法成功执行)

确保环境搭建完成以后,进入jmeter的安装目录,进入bin下,启动jmeter-server(如果没有可执行权限,要先添加权限,root用户没有权限限制)

所有的slave机器都要启动jmeter-server,默认端口是1099,可以通过修改jmeter.properties文件进行修改。回到master机器上,修改jmeter.properties文件中的remote_hosts,将slave机器的ip地址添加上去,多个ip之间用逗号隔开。其中127.0.0.1表示master机器本身,为了独立开master,可以将其去掉,这样就不会在master上执行测试。

然后在master机器上执行下面的命令:

jmeter -n -t test.jmx -R ip1,ip2,ip3 -l testReport.jtl

其中 -R 指定远程连接的slave机器的ip地址,多个ip之间用逗号隔开。

七、分布式配置过程中可能会遇到的错误及解决办法

问题1:

在slava机器上执行jmeter-server的时候,会出现以下的问题:(以下为本人遇到的问题)

1、出现 XII DISPLAY 这样的错误,可以先执行下面命令:

echo $DISPLAY

如果内容为空(我就是内容为空),那么,就继续执行下面的命令:

DISPLAY=:0

#DISPLAY=localhost:0.0

上面两个都可以

问题2:

jmeter-server启动失败。通常有以下两个错误:

1、Unable to get local host IP address

2、xxx is a loopback address

一般上面的两个问题,都是由host文件引起的,我们需要修改host文件,可以执行下面的命令:

vi /etc/hosts

我是将127.0.0.1替换成本机ip地址的。

问题3:

jmeter-server启动成功,但是在master上无法执行分布式测试。

我这边抛出的错误是:”No route to host“

这个问题是由防火墙引起的,也就是说,slave上的防火墙没有关闭,此时,我们需要到slave上关掉防火墙。之后就可以正常运行了。关闭防火墙的方法多种,我这里特别记录下我自己红帽子7虚拟机的命令:

#查看防火墙状态

systemctl status firewalld

#关闭防火墙

systemctl stop firewalld

 

欢迎关注公众号: 捉虫记

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧阳敏敏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值