• Linux下使用jmeter进行分布式压测


    主控机和压测机均为Linux系统
    为了避免一些未知的错误,建议三台机器使用同样版本的jdk、jmeter
    注:建议配置好其中一台机器后,直接克隆出另外两台
    一台master,两台slave

    1. Master配置

    进到jmeter安装目录的bin文件夹,修改jmeter.properties文件

    vim jmeter.properties
    
    //大概第1038行,添加/修改以下代码:
    jmeterengine.nongui.port=0
    
    

    2. Slave机配置

    进到jmeter安装目录的bin文件夹,修改jmeter-server
    vim jmeter-server
    添加以下代码:

    RMI_HOST_DEF=-Djava.rmi.server.hostname=slave本机IP
    

    开启jmeter-server服务

    。/jmeter-server
    

    运行成功后,会在控制台打印:

    Created remote object: UnicastServerRef [liveRef: [endpoint:[***](local),objID:[***, ***]]]
    

    3. 运行脚本,开始测试

    运行以下命令:(master也作为一台负载机)

    /home/jump/test/apache-jmeter-5.1.1/bin/jmeter -n -t /home/jump/test/scripts/im_test.jmx -R 127.0.0.1,10.3.0.111,10.3.0.112 -l /home/jump/test/results/ds_qrcodeScan_600u_10min.jtl
    

    看到以下内容则表示各项配置无误,可以开始测试:

    Creating summariser <summary>
    Created the tree successfully using test.jmx
    Configuring remote engine: ***
    Configuring remote engine: ***
    Starting remote engines
    Starting the test @ Sun Mar 04 11:23:31 CST 2018 (1520133811112)
    Remote engines have been started
    

    此时slave机器的控制台会提示:

    Starting the test on host *** @ Sun Mar 04 11:23:32 CST 2018 (1520133812700)
    

    脚本运行结束后,slave机器的控制台会提示:

    Finished the test on host *** @ Sun Mar 04 11:25:53 CST 2018 (1520133953286)
    

    踩过的坑

    1. 执行压测时,连接agent成功,但是并未开始就结束了,也没有任何报错
      原因:有参数文件未读取到
      解决方案:
      • jmeter脚本和测试数据(如果有的话)主机和从机两边都要存放。且controller中jmeter脚本、测试数据的存放路径和agent中jmeter脚本、测试数据的存放路径一致。
      • 在原因1的基础上,controller的测试数据地址要用绝对路径,agent的测试数据绝对路径或相对路径均可。
    2. 执行./jmeter-server,会提示不可执行,需要首先赋予可执行权限chmod +x jmeter-server
  • 相关阅读:
    洛谷 P1313 计算系数
    洛谷 P1088 火星人
    洛谷 P1049 装箱问题
    P5016 龙虎斗
    洛谷P1208
    求lca
    没有上司的舞会
    最短路spfa
    懒羊羊找朋友
    简单的图论问题之单源最短路dijkstra算法
  • 原文地址:https://www.cnblogs.com/51benpao/p/13961270.html
Copyright © 2020-2023  润新知