binning_001 发表于 2019-1-24 22:30:08

jmeter学习指南之分布式测试的来龙去脉

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

1、GUI、非GUI的区别

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

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

非GUI:通过命令行运行,无图形化界面,不方便查看测试结果,但是消耗压力机资源较低,可以支持较大并发。

2、GUI、非GUI遇到的问题

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

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

3、如何解决?

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

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

jmeter的分布式控制,说的通俗一点,就是指远程启动功能,具体原理如下图:
http://www.xqtesting.com/file.php?pathname=201901/f_dd660fad64d1a22d00d127aa87a19f0a.png&objectType=&imageSize=&extension=png

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服务,启动成功如下图:
http://www.xqtesting.com/file.php?pathname=201901/f_03a86734607ddd11cd1a04d0081170a4.png&objectType=&imageSize=&extension=png
修改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机器。
http://www.xqtesting.com/file.php?pathname=201901/f_c27f71ea85c5a26494e6235ff4da3b57.png&objectType=&imageSize=&extension=png
添加一个脚本,点击远程启动即可启动运行slave机器,此时在slave机上可看到控制台信息,在控制机通过监听器-聚合报告或察看结果树可看到执行结果。
http://www.xqtesting.com/file.php?pathname=201901/f_36d5b156c83fae8547e92052f68c168e.png&objectType=&imageSize=&extension=png
同样的,也可以进行远程停止操作:
http://www.xqtesting.com/file.php?pathname=201901/f_42b838ebc83fc1cbd1b3f07c85ae7f07.png&objectType=&imageSize=&extension=png
需要注意的问题:

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.


页: [1]
查看完整版本: jmeter学习指南之分布式测试的来龙去脉