[5] JMeter-JMeter分布式测试的来龙去脉

主要内容介绍

今日文章主要内容介绍

一、使用Jmeter分布式测试的背景

1、GUI和非GUI运行的区别、特点

2、GUI和非GUI运行过程中的问题

3、如何解决问题?

二、分布式原理

三、分布式配置

1、配置远程机slave

2、配置控制机controller

3、controller远程控制slave

4、注意事项

使用Jmeter分布式测试的背景

一、使用Jmeter分布式测试的背景:

1、GUI、非GUI的区别

首先,我们知道Jmeter有两种运行方式,GUI、非GUI。

GUI:在Windows系统上运行,图形化界面,方便收集测试结果,但是消耗压力机资源较高,容易卡死,有并发限制。

非GUI:在Linux系统上通过命令行运行,无图形化界面,不方便收集测试结果,但是占用压力机资源较低,可以支持较大并发。

2、GUI、非GUI遇到的问题

Jmeter是基于java程序运行的,在windows上使用Jmeter进行性能测试时,非常耗费客户机的CPU和内存,如果并发数稍微大一点(比如100、1000...并发),单台电脑的配置经常无法支持,很容易卡死,即使不卡死也会使电脑运行很慢,导致我们没办法进行其它操作。

在Linux上使用Jmeter进行性能测试时,能够大大缩减所需要的系统资源;但是需要将jmeter脚本上传到Linux上使用命令行方式运行,如果脚本经常改动就要频繁上传;测试完成后要把结果数据下载到本地GUI环境中查看,当结果文件较大时,下载要花费大量时间,总是有很多不方便。

3、如何解决?

以上问题,都可以使用Jmeter的分布式测试功能来解决:

通过Jmeter远程启动功能,把一台windows机器做为控制器,远程控制其它多个windows或linux压力机,从而把压力分散到多台机器上,实现高并发功能;并在master上收集测试结果。

jmeter分布式原理

二、jmeter分布式原理

jmeter的分布式控制,说的通俗一点,就是指远程启动功能,具体原理如下图:


1、客户端机器(window系统)作为一个控制器controller,控制多台slave机器的操作。

2、Controller和slave机器上最好装有相同版本的jdk和jmeter,并配置好环境变量,安装和配置方法跟windows环境类似。

3、controller通过GUI界面启动slave机器,将jmeter压测脚本发送给每台启动的slave,slave获得脚本后开始执行。slave本地不需预先存储脚本,但是需要有脚本中的依赖文件(如csv文件等)。

4、各台slave执行完成后,将结果传回给controller,controller收集后整合显示出来。

jmeter分布式配置

三、jmeter分布式(远程启动)配置

1、slave远程机配置

  • slave远程机需安装jdk和jmeter,最好与controller上的版本保持一致,无法满足时至少保证slave上的jmeter能正常运行(如jmeter3.0以后需要jdk1.7及以上版本)。

  • 启动salve机的jmeter-server

    在slave的%JMETER_HOME%bin目录下执行./jmeter-server命令启动jmeter服务,启动成功如下图:

  • 修改slave机jmeter默认端口

  上图红框中的ip为slave机的ip地址,红框中的端口号port为启动 jmeter服务监听的port,一般会有个默认端口号1099,但最好自定义,确保端口号不冲突。修改方法如下:

在slave机器的%JMETER_HOME%bin目录下找到jmeter.properties,修改文件中server_port和server.rmi.localport,即可自定义端口号:

server_port=1029

server.rmi.localport=1029

注意这两项必须同时修改,且一样。

修改后执行slave的jmeter-server即可看到控制台消息中修改是否生效;

2、控制机controller配置

  • 在控制机上要保证执行命令能发送到远程slave机,需要在控制机上配置远程机的ip地址和port。

  • 在控制机jmeter安装目录的bin文件夹下,找到jmeter.properties,修改配置如下图,其中ip和port即为上一步slave的ip和port,如上图中jmeter-server启动时红框中显示的内容。多个slave机器的配置可通过逗号分隔。

remote_hosts=10.165.124.6:1029

若要添加多个slave机,重复上面的步骤即可。

3、远程启动和停止

  • 配置完成后打开控制机jmeter的GUI界面,在运行-远程启动中即可看到自己配置的slave机器。

  • 添加一个脚本,点击远程启动即可启动运行slave机器,此时在slave机上可看到控制台信息,在控制机通过监听器-聚合报告或察看结果树可看到执行结果。

同样的,也可以进行远程停止操作:

需要注意的问题:

1、修改配置文件后必须重启jmeter才能生效

2、在控制机上远程启动之前,必须先运行slave机的jmeter-server.bat

3、当jmeter脚本中需要依赖csv等数据文件时,该文件需上传至slave机,并需要设置正确的路径。

4、先配置一个slave机成功后,再依次配置多个slave机

5、当slave机是linux系统时,一般只配置一个slave机即可,除非并发特别大时,才需要配置多个slave.

6、分布式运行时,总并发数是脚本中设置的线程数 *  slave机的个数,如线程数设置为10,使用3个slave机运行,则总并发数是30.

end

------------------

本文首发于本人原创公众号【媛测】(原名-玩转jmeter),专注分享性能、自动化测试等相关知识,寻找志同道合之士共同成长!扫码关注后分别回复jmeter、python、linux,领取个人总结资料。

猜你喜欢

转载自blog.csdn.net/lijing742180/article/details/81158147
今日推荐