zoukankan      html  css  js  c++  java
  • Jmeter的分布式测试

     一. 分布式测试

    分布式应用(distributed application)指的是应用程序分布在不同计算机上,通过网络来共同完成一项任务的工作方式。性能测试当中,负载机的性能会对性能测试的执行产生影响。作为Java应用程序,Jmeter运行时也需要一定的资源,当性能测试的模拟的并发过大时,负载机的CPU,内存等会被大量消耗,经常会出现Java内存溢出的错误,往往导致负载机成为测试瓶颈。Jmeter提供了分布式操作的功能,用户可以通过扩展负载机的方式来解决单台机器负载过大的问题。

    二. Jmeter分布式测试模型

     

    按照分布式的架构,Jmeter会将一台机器作为master控制机,其他机器作为slave代理机。Master控制机只有一个,slave代理机可以有多个。

    Master控制机的任务,是向salve机发送命令,并从slave机接收返回信息,收集测试数据。Master机最终展示的数据,是全部slave机测试数据的集合。Slave机的任务,是执行接收的命令,并向控制机返回测试结果数据。Slave机是通过命令行执行任务的,所以,不需要启动Jmeter GUI操作界面。

    三. Jmeter分布式运行前的配置

    首先对Slave机进行配置:

    Step1:安装JDK,Jmeter,配置好环境变量。

    Step2:通过“ipconfig”命令,查看IP地址。

     

    机器上可能有多个网卡,一般我们都是在内网环境下执行测试的,所以我们需要的是内网IP,不要选错了。

    Step3:打开${Jmeter_PATH}/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=10.27.33.11:1099,1099是默认端口号,可根据需要改成其他端口。

     

    Step4:启动${Jmeter_PATH}/bin/jmeter-server.bat服务。

     

    其他slave机依照此步骤一样配置就好。注意,各机器之间,JDK,Jmeter版本最好保持一致,文件放置的目录也最好保持一致。不过有了Docker,slave机都是从master机复制过来的,所以,一般问题不大。

    Master机的配置:

    前2步和slave机前2步一样。

    Step1:安装JDK,Jmeter,配置好环境变量。

    Step2:通过“ipconfig”命令,查看IP地址。

    Step3:打开${Jmeter_PATH}/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”, 在master机上,把所有slave机的IP:端口都写在这里,并用逗号分隔。

     

    Step4:启动${Jmeter_PATH}/bin/jmeter-server.bat服务。

    配置完毕。在执行前,将测试需要的jmx文件和相关的csv,txt等数据文件放置在各机器上,路径注意要一致。然后,在master机上打开Jmeter,从Run->Remote Start可以看到所有的slave机(IP:端口)。

     

    设置线程生产数据,点击Run->Remote Start->Remote Start All。

     

    执行结束,因为执行了3台负载机,所以最后的samples数量是10x3=30.

     

    Slave机的控制台信息如图。

     

    四. 下面是几个坑,有很多是网上各位前辈总结的,一起列在这里。

    (1).环境及数据问题。

    前面也提过了,尽量保持各机器之间环境一致,jmx和数据文件放置的目录一致。否则运行时,master控制机会接收不到返回数据。

    (2).机器之间出现拒绝连接的Exception

    “Connection refused xxxx”,出现这种情况,可能是你的防火墙未关闭;又或者是机器不在一个网段内,最好都用内网IP。

    (3).自定义端口

    如果用的是自定义端口,找到jmeter.properties文件,修改如下两个配置项,比如改为1089:

    server_port=1089

    server.rmi.localport=1089

    修改后,重启jmeter-sever.bat即可。

    (4).jmeter-sever.bat启动后,IP不是内网

    这个是多网卡造成的,很多时候启动的是公网的IP,而我们配置的是内网。

    修改jmeter-sever.bat,

     

    修改jmeter.bat:

    新增set rmi_host=-Djava.rmi.server.hostname=本机ip;

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

     

    修改后,重启jmeter-sever.bat

  • 相关阅读:
    TongWEB与JOnAS 对比,国产中间件战斗机东方通TongWEB源码解析
    矢量图查找 阿里巴巴(矢量图标)
    中兴 F412 超级帐号telecomadmin破解(适用2015版h啊RowCount="0") TEWA-300AI EPON TEWA-500AI EPON破解
    swing版网络爬虫-丑牛迷你采集器2.0
    jeecms 单页静态化方法
    panabit允许一台代理服务器只能收QQ企业邮箱,和内网ip通讯,限制除了QQ企业邮箱以外的所有内容规则
    LNMP安装快速导航(Linux一键安装php环境)
    射手网推荐的书
    [原创]JEECMS 自定义标签调用广告版位下的所有广告(利用广告管理管理首页幻灯片)
    jeecms一些经典标签
  • 原文地址:https://www.cnblogs.com/xbxblog/p/9567603.html
Copyright © 2011-2022 走看看