测试工程师做性能测试JMeter工具必知必会知识系列2:JMeter安装部署

 

2.1 JMeter环境需求

JMeter是纯Java应用程序,因此有Java运行环境的要求。不同版本JMeter对Java版本的要求不尽相同。比如:

JMeter3.3仅支持Java 8

JMeter4.0要求Java 8+(表示大于等于Java 8版本)

JMeter5.1.1要求Java 8+

Java版本一般指的是JDK版本,这两个概念可以无差别对待。目前JDK可以分为Oracle JDK与Open JDK两类,其中Open JDK是Oracle JDK的开源免费版。

从2019年1月开始,LTS的Oracle JDK8与Oracle JDK11不再免费,企业需要获取JDK的更新升级,则需要购买Orace的订阅服务。也可以不付费而使用免费的Open JDK 8/11,两者没有太大的区别。

2.2 JMeter运行原理

JMeter以创建多个线程的方式来模拟多个用户执行操作,一个线程代表一个虚拟用户。当JMeter执行测试时,测试计划会发送到负载机,并向负载机发送命令以CLI方式执行测试,产生多个线程向被测系统发送请求,生成负载。

基于操作方式,可以分为两种:

GUI模式

图形用户界面运行模式。可视化显示更加直观,可使用鼠标操作更为方便。

CLI模式

命令行模式(旧称NON GUI)。

使用GUI模式存在如下问题:

1)GUI模式运行时会消耗大量的系统资源,从而影响测试结果;

2)某些环境中可能无法使用GUI模式,比如将JMeter部署在没有GUI的Linux系统上。

为了规避这些问题,JMeter提供了CLI模式,可以通过运行JMeter命令来执行测试。

建议使用GUI模式来创建和调试测试脚本;使用CLI模式执行测试并收集测试结果。

基于运行架构,可以分为两种:

单机模式

JMeter安装在一台服务器上,这台机器也是负载机,所有请求都从该机器发出

分布式模式

单机模式存在如下问题:

1)JMeter运行时,产生的众多线程会消耗大量的CPU,内存资源,负载机本身可能成为测试瓶颈;

2)网络上能传输的数据量受网络带宽影响,无法做到高并发,导致测试结果不准确。

使用分布式模式可以解决这些问题,使用一台Master控制多台远程Slave,将测试计划分发到不同的Slave上执行,请求从不同的Slave发出。

分布式运行原理

JMeter分布式体系结构

JMeter分布式执行测试过程

1.首先启动每台Slave上的Agent程序

Windows: jmeter-server.bat,Linux/Unix: jmeter-server;

2.启动Master后自动连接各台远程Slave;

3.Master将存储在本地的测试计划(jmx文件)分发到各台远程Slave,并命令各Slave以CLI模式执行JMeter测试;

注意:参数化文件或依赖包需要手工拷贝到各台远程Slave上;

4.Slave执行测试向SUT(被测系统)发送请求,并接受服务器返回的响应结果;

5.Slave将测试结果回送给Master;

6.Master接收并汇总统计测试结果。

2.3 单机环境部署

这里以在Windows 10(64bit)上安装最新的JMeter5.1.1版本为例进行讲解。

安装步骤如下:

1.安装JDK 11(Oracle JDK 11学习用途无妨)

安装路径默认为C:\Program Files\Java\jdk-11.0.3

2.配置JDK 11环境变量

2.1.新建环境变量JAVA_HOME,将其值设置为:

C:\Program Files\Java\jdk-11.0.3

2.2.修改环境变量Path,在其值后追加如下内容:

;%JAVA_HOME%\bin

2.3.测试JDK 11

分别运行java,javac,java -version命令

若前两个命令显示了命令的语法信息,最后一个命令显示了JDK 11的版本信息,

则表明JDK安装成功。

3.安装JMeter5.1.1

将apache-jmeter-5.1.1.zip解压缩到任意目录即可,

比如:D:\Program Files\apache-jmeter-5.1.1

4.启动JMeter5.1.1(GUI模式)

到解压缩目录下的bin子目录中,找到jmeter.bat,双击启动即可。

2.4 分布式环境部署

程序清单

1.jdk-8u212-linux-i586.tar.gz (JDK8 32bit)

2.apache-jmeter-5.1.1.zip (JMeter Master与Slave安装包相同)

服务器列表

这里以Master控制2台Slave为例介绍部署过程。服务器信息如下表所示:

操作步骤

1.部署并配置多台Slave;

2.部署并配置Master;

3.GUI方式启动Master测试验证。

部署并配置多台Slave

Slave1部署详细步骤:

1.安装JDK8

[root@localhost ~]# mkdir -p /usr/local/java

[root@localhost ~]# tar -zxvf jdk-8u212-linux-i586.tar.gz -C /usr/local/java

2.配置JDK环境变量

[root@localhost ~]# vi /etc/profile

在文件末尾加入如下内容:

export JAVA_HOME=/usr/local/java/jdk1.8.0_212

export PATH=JAVAHOME/bin: JAVA_HOME/bin:JAVA

H

OME/bin:PATH

3.安装Slave

[root@localhost ~]# mkdir -p /usr/local/jmeter

[root@localhost ~]# unzip apache-jmeter-5.1.1.zip -d /usr/local/jmeter

4.配置Slave

在JMeter的安装目录中找到 bin/jmeter.properties这个配置文件,编辑:

server_port=1099 #默认端口为1099,可以改为其他端口

server.rmi.ssl.disable=true #取消注释,并将false改为true

5.启动jmeter-server

[root@localhost ~]# cd /usr/local/jmeter/apache-jmeter-5.1.1/bin/

[root@localhost bin]# nohup ./jmeter-server -Djava.rmi.server.hostname=192.168.126.129 &

#多个网卡需要指定IP地址

Slave2部署与Slave1相同,重复这个过程即可。

(后台启动时需要指定Djava.rmi.server.hostname=192.168.126.130)

2. 部署并配置Master

1.安装JDK8

2.配置JDK8环境变量

3.安装Master

上面步骤与单机环境相同,不再细说.

4.配置Master

在jmeter的安装目录中找到 bin\jmeter.properties这个配置文件,编辑:

将:

remote_hosts=127.0.0.1

这行内容,改为如下内容:

remote_hosts=192.168.126.129:1099,192.168.126.130:1099

#注意:Slave的IP与save_port用:连接,多个键值对之间用,分隔

server.rmi.ssl.disable=true #取消注释,并将false改为true

5.启动Master

到解压缩目录下的apache-jmeter-5.1.1\bin,找到jmeter.bat,双击启动。

3. GUI方式启动Master测试验证

以GUI方式启动Master,菜单Run–>Remote Start中可以看到配置的远程Slave信息,如下图所示:

注意事项

1.Master与各Slave使用的Java版本保持一致;

2.Master与各Slave使用的JMeter版本保持一致;

3.若测试计划中引用了某插件,则Master与各Slave都要包含该插件;

4.测试计划只需要放在Master上,执行时会自动分发到各Slave,不需要每台Slave复制一份;

5.若测试计划中引用到了参数化文件,需要将参数化文件复制到各台Slave上,并且存放的目录路径需要保持一致;

6.分布式执行的线程数=假定单机部署执行的线程数Slave数。比如单机部署时运行50个线程,先以分布式运行,有4台Slave,则总共执行的线程数为:504=200。

最后

俺叫小枫,一个成天想着一夜暴富的测试员

(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

点赞关注不迷路!!!【三连ღ】,有问题也可私聊哟~(*╹▽╹*)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值