51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2190|回复: 0
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情

    2018-3-26 10:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-1-24 22:30:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    使用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.


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-15 00:07 , Processed in 0.061442 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表