Jmeter 分布式配置

       使用Jmeter有一段时间了,却很少写总结。下午有个朋友向我询问jmeter分布式的配置,晚上回来顺便写点东西吧!

       在使用Jmeter进行性能测试时,如果并发数比较大(比如某个项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能。

 

一、Jmeter分布式执行原理

 

   1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。

 

   2、执行时master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。

 

   3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

 

二、执行机(slave)配置

       1、JDK (所有测试机统一版本,我使用的是1.7)

          1.1 安装JDK

          1.2 配置环境变量:JAVA_HOME,JMETER_HOME,PATH,CLASSPATH

 

       2、Jmeter(所有测试机统一版本)

          2.1 官网下载,我使用的是apache-jmeter-2.13

          2.2 修改jmeter-server文件(master、slave都要配置)

              添加 RMI_HOST_DEF=-Djava.rmi.server.hostname=172.18.11.20(slave IP)     

             在这里说明一下,为何指定本机的IP呢,是因为有些公司采用的是双网卡或者更多网卡,如果不指定就会报错。(具体error msg 后面我会说)

 

          2.3 master端修改jmeter.bat 文件

              添加set rmi_host=-        Djava.rmi.server.hostname=172.18.11.39(master IP)

              set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%

 

          2.4 在jmeter.properties中自定义端口(也可以不修改)

            agent 默认端口为1999 ,我这里修改某台机器的端口为1888

            server_port=1888  

            server.rmi.localport=1888

 

          2.5 启动服务

           比如我有2台agent 172.18.11.199,172.18.11.20(多台配置重复上面的2.1、2.2、2.3、2.4)

           分别启动 jmeter_server.bat

三、调度机( master)配置:    

       1、修改jmeter.properties

           添加 remote_hosts=172.18.11.20:1888,172.18.11.199:1889(多台 agent使用逗号隔开)

 

       2、重新启动jmeter.bat 

           这里可以看到所配置的slave的IP:PORT,这里可以选择启动某一台,或者选择全部启动.(如下图)

     
     

 四、注意点说明:

  1、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以master自身会有消耗,所以建议单独用一台机器作为master。

  2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。

  3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。

 

五、可能遇到的问题:

      1、执行机(slave)启动jmeter-server服务时,提示:

             Could not find ApacheJmeter_core.jar …

            … Trying JMETER_HOME=..

             Found ApacheJMeter_core.jar

            这个是因为开始没有找到ApacheJmeter_core.jar,然后去JMETER_HOME目录下查找,最后找不到了。如果不希望看到Could not find的字样,可以配置一下jmeter_home的路径(即bin目录的上一级目录),这样启动jmeter-server服务时,就只会看到Found ApacheJMeter_core.jar,当远程访问时,会看到控制台上打印出一行:Starting the test on host [ip]:port @....(大概是这样的,@后面是执行开始的时间),远程执行结束,会打印一行:Finished the test on host [ip]:port @...,表示远程执行结束。

      2、调度机(master)远程启动时如下图

      


        原因分析:

      Jmeter采用了rmi进行远程调用,在开启RMI服务时,如果服务端有多个网卡,它只是使用其中任意一个网卡,默认情况下,导致jmeter的master机器和slaves机器不在同一个网段内,无法互通,导致失败。

      解决方法为:2.2、2.3中的配置

 

 

 

 

如有疑问,欢迎加 企鹅群:113097051

猜你喜欢

转载自20120923lina.iteye.com/blog/2288989
今日推荐