JMeter远程(转)

        如果运行JMeter客户端的机器性能或者数量不能满足测试需要,那么可以通过单个JMeter GUI客户端来控制多个远程JMeter服务器,以便对服务器进行压力测试,模拟足够多的并发用户。可以通过单台机器管理多个JMeter执行引擎,但是没有必要将测试计划复制到每一台机器,JMeter GUI客户端会将它发往每一台JMeter服务器。每一台JMeter远程服务器都执行相同的测试计划。JMeter不会在执行机间做负载均衡,每一台服务器都会完整地运行测试计划。

        比如,在1.4GHz~3GHz的CPU、1GB内存的JMeter客户端上,可以处理线程100~300。但是Web Service例外。XML处理是CPU运算密集的,会迅速消耗掉所有的CPU。一般来说,以XML技术为核心的应用系统,其性能将是普通Web应用的10%~25%。另外,如果所有负载由一台机器产生,网卡和交换机端口都可能产生瓶颈,所以一个JMeter客户端线程数不应超过100。

        采用JMeter远程模式并不会比独立运行相同数目的非GUI测试更耗费资源。但是,如果使用大量的JMeter远程服务器,可能会导致客户端过载,或者网络连接发生拥塞。

        请注意,假如测试人员将JMeter执行引擎安装在应用服务器(测试目标)上,那么这显然会加重应用服务器的负担,测试结果也将变得不可信。作者推荐的方式是将JMeter远程服务器放在应用服务器(测试目标)所在的同一个网段内。这样做既可以减少JMeter收集测试结果对网络产生的冲击,又可以避免对应用服务器(测试目标)性能产生影响。


        下面是启动JMeter远程测试的基本步骤:

        步骤1:配置节点

        确保所有节点(JMeter客户端和JMeter远程服务器)运行相同版本的JMeter。尽可能在所有操作系统上使用相同的Java版本。

        如果测试用到了外部数据文件,那么请注意这些文件不会被JMeter客户端分发,因此测试人员需要确保每台执行机上都保存了这些数据文件(其所在目录也必须正确)。如果有必要,用户可以为每台执行机设置不同的属性变量,即在JMeter远程服务器上编辑user.properties或者system.properties文件。这些属性将会在JMeter远程服务器启动时被识别,并有可能被应用到测试计划之中,从而影响测试执行(例如,与其他远程服务器发生交互)。另外,不同的JMeter远程服务器可能会使用不同内容的数据文件(例如,每台服务器必须使用不同的ID,就以此来划分数据文件)。

        步骤2:启动远程服务器


        要启动JMeter远程节点,请在被远程的机子上运行JMETER_HOME/bin/jmeter-server (UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows)脚本。

请注意,每个远程节点上只能运行一个JMeter远程服务器脚本,除非采用不同的RMI端口。从JMeter 2.3.1开始,JMeter远程服务器会自己启动RMI注册;用户没有必要单独启动RMI注册。假设测试人员一定要单独启动RMI注册,可以在远程节点上定义JMeter属性server.rmi.create=false。

默认情况下,JMeter远程服务器的RMI使用动态端口号。这样就会为防火墙配置带来麻烦,因此JMeter 2.3.2及其以后的版本,会检查JMeter属性server.rmi.localport。如果该值非零,JMeter远程服务器就会用它来作为本地端口号。

        步骤3:将JMeter远程服务器的IP地址添加到客户端属性文件中

        编辑JMeter控制机的属性文件。在/bin/jmeter.properties文件中找到属性"remote_hosts",使用JMeter远程服务器的IP地址作为其属性值。可以添加多个服务器的IP地址,以逗号作为分隔。

请注意测试人员还可以使用-R命令行选项来指明将会使用的远程服务器。这与使用-r 和-Jremote_hosts={服务器列表}的效果相同。例如jmeter -Rhost1,127.0.0.1,host2。

如果测试人员定义JMeter属性server.exitaftertest=true,那么远程服务器在运行完单个测试后就会退出。-Z标志也有同样的效果,参见后面的内容。

        步骤4(a):通过GUI客户端启动JMeter测试

        现在轮到启动JMeter GUI客户端了。在MS-Windows环境下运行"bin/jmeter.bat"脚本,在UNIX环境下运行"bin/jmeter"脚本。测试人员会发现在运行(Run)菜单下,包含两个子菜单"Remote Start"和"Remote Stop",如图11-4所示。这两个子菜单中包含测试人员在属性文件中设置的JMeter远程服务器IP地址。此刻,请使用远程启动和停止来代替普通的JMeter启动和停止。

        步骤4(b):通过非GUI客户端启动JMeter测试

        还有另外一种方法,测试人员可以通过非GUI客户端来启动远程服务器。命令如下:

            jmeter -n -t script.jmx -r

        或者:

            jmeter -n -t script.jmx -R server1,server2...

        其他标志可能也有用。

        -Gproperty=value:在所有JMeter远程服务器中定义一个属性(可以多次出现)

        -Z:在测试结束后退出远程服务器。

第一个例子会启动定义在JMeter属性remote_hosts中的远程服务器;而第二个例子会先定义远程服务器列表,接着启动它们。命令行客户端会在所有服务器停止后退出。

       手动配置JMeter远程测试

        在某些情况下,jmeter-server脚本不能正常工作(如果测试人员使用的操作系统不在JMeter开发者预期的范围内)。下面介绍如何启动JMeter远程服务器(对应上面的步骤2),其中包含了更多人工操作。

        步骤1:启动RMI注册

        从JMeter 2.3.1开始,JMeter远程服务器会自己启动RMI注册,因此这里的内容不适用于普通情况。如果要采用历史版本的操作方法,首先在JMeter远程服务器上定义JMeter属性server.rmi.create=false,并遵循如下指南。

        JMeter使用Remote Method Invocation(RMI)作为远程通信机制。因此,测试人员需要用到JDK "bin"目录中的RMI注册程序(名为"rRmiregistry")。在运行Rmiregistry之前,请确保如下jar存在于测试人员的系统claspath中:

JMETER_HOME/lib/ext/ApacheJMeter_core.jar。

JMETER_HOME/lib/jorphan.jar。

JMETER_HOME/lib/logkit-1.2.jar。

注册程序需要访问特定JMeter类。运行Rmiregistry无须参数。默认情况下应用程序会监听端口1099。

        步骤2:启动JMeter远程服务器

一旦RMI注册程序运行起来,就启动JMeter远程服务器。JMeter启动脚本需携带"-s"选项。

步骤3和步骤4同上面的介绍。

       一些小技巧

JMeter/RMI要求建立一个从客户端到远程服务器的连接。这就会用到测试人员所选择的端口号,默认值是1099。JMeter/RMI还要求建立一个反向连接,目的是从远程服务器向客户端返回测试采样结果。这就会用到一个更高数字的端口号。如果在JMeter客户端与JMeter远程服务器之间存在任何防火墙或者网络过滤器,那么测试人员就需要确保它们已经被正确配置,并允许相关连接通信。如果有必要,请使用监听软件来观察通信的过程。

如果JMeter运行在Suse Linux上,下面这些技巧对测试人员可能会有帮助。默认的安装可能会启动防火墙。在这种情况下,远程测试将无法正常工作。如果测试人员发现连接被拒绝后,可以通过下面的选项打开debugging。从JMeter 2.3.1版本开始,RMI注册由JMeter远程服务器启动;不过相关选项依然可以通过JMeter命令行传递。例如,"jmeter -s -Dsun.rmi.loader.logLevel=verbose"(省略了-J前缀)。另外这些属性还可以被定义在system.properties文件中。

解决的方法是从etc/hosts中删除对127.0.0.1和127.0.0.2的回送(Loopback)。 当127.0.0.2的回送无效时,jmeter-server将无法连接到Rmiregistry。

替换:

    `dirname $0`/jmeter -s "$@"

为:

    HOST="-Djava.rmi.server.hostname=[computer_name][computer_domain]  
    -Djava.security.policy=`dirname $0`/[policy_file]"  
    `dirname $0`/jmeter $HOST -s "$@"


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值