欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jmeter 分布式配置 博客分类: jmeter jmeter接口测试性能测试 

程序员文章站 2024-03-18 16:08:58
...

       使用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,这里可以选择启动某一台,或者选择全部启动.(如下图)

     
Jmeter 分布式配置
            
    
    博客分类: jmeter jmeter接口测试性能测试      

 四、注意点说明:

  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 分布式配置
            
    
    博客分类: jmeter jmeter接口测试性能测试 
        原因分析:

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

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

 

 

 

 

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

  • Jmeter 分布式配置
            
    
    博客分类: jmeter jmeter接口测试性能测试 
  • 大小: 2.2 KB
  • Jmeter 分布式配置
            
    
    博客分类: jmeter jmeter接口测试性能测试 
  • 大小: 13.3 KB