视频地址:http://edu.51cto.com/lecturer/4626073.html
使用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的分布式控制,说的通俗一点,就是指远程启动功能,具体原理如下图:
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.
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/192642.html