zoukankan      html  css  js  c++  java
  • jmeter非GUI模式_分布式运行

    jmeter命令行运行但是是单节点下的, jmeter底层用java开发,耗内存、cpu,如果项目要求大并发去压测服务端的话,jmeter单节点难以完成大并发的请求,这时就需要对jmeter进行分布式测试:

    1、分布式原理

    master机器------->slave机器-------> 被压测系统

    这里的 slave机器可以有多个,只要配置即可

    处理过程:

    (1)master启动以后,会拷贝本地的jmx文件分发到远程的slave机器上;

    (2)slave机器拿到脚本以后启动命令行模式去执行脚本,对于每台slave机器拿到的脚本都是一样的,所以如果jmx脚本为50个线程跑3分钟,那么实际并发就是50*执行机个数(如果是3个执行机器的话)=150个线程并发跑3分钟;

    (3)执行时,slave会把执行获得的数据结果传给master机器,master机器会收集所有slave机器的信息并汇总,这样master机器上就存在一份所有slave机器汇总的数据结果

    2、相关配置

    slave机器上,需要设置2个点:

    (1)jmeter.properties文件中 server.rmi.ssl.disable 属性改为true

    (2)jmeter.properties文件中 ,server_port端口号为机器未被占用的端口号,一般默认为1099(一般都不修改,如果有被占用,可以修改),remote_hosts为127.0.0.1不修改

    在master机器上配置:

    (1)jmeter.properties文件中 server.rmi.ssl.disable 属性改为true

    (2)jmeter.properties文件中 ,修改remote_hosts,配置为slave机器,注意到由于master机器作为调度机本身会有一定的性能消耗所以我们配置远程执行机的时候并没有把master机器配置进去,只配置了2台执行机。ip:端口

    (PS:其实也可以把 master机器也配置上去了,这样master机器也可以作为slave,master机器如果不作为 salve,那就不配置)

    3、在所有slave机器上,启动 server

        在 jmx脚本所在的目录下执行,nohup /home/mispauto/usr/apache-jmeter-5.2.1/bin/jmeter-server  &  

     最好是工程目录下执行启动命令,也就是脚本所在的目录下,因为运行时jmeter需要读取csv资源文件,我们脚本里csv文件存放的是相对路径,也就是命令启动的路径。

    (最好用 nohup 执行,因为,如果直接后台执行,有可能断了链接之后,jmeter-server的进程也断了)

        启动 server成功的话,可以查到进程:

       

    [mispauto@vm0080 ~]$ ps -ef|grep jmeter

    mispauto 9966 31473 0 15:21 pts/2 00:00:00 /bin/sh ./jmeter-server
    mispauto 9968 9966 0 15:21 pts/2 00:00:00 /bin/sh ./jmeter -Dserver_port=1099 -s -j jmeter-server.log
    mispauto 9989 9968 2 15:21 pts/2 00:00:01 /home/mispauto/usr/local/jdk1.8.0_131/bin/java -server -XX:+HeapDumpOnOutOfMemoryError -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX
    :MaxGCPauseMillis=100 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -Duser.language=en -Duser.region=EN -jar ./ApacheJMeter.jar -Dserver_port=1099 -s -j jmeter-server.log

       

    4、在master机器中执行脚本

    /home/mispauto/usr/apache-jmeter-5.2.1/bin/jmeter -n -t /ulic/mysql_project/emisp_login_no.jmx -r -l /ulic/mysql_project/result/result_debug.jtl

    -r就是指的 远程运行

    如果是有参数配置:用 -G

    /home/mispauto/usr/apache-jmeter-5.2.1/bin/jmeter -n -r -t emisp_login.jmx -Gthread=1 -Gloopcount=-1 -Gduration=60 -l /ulic/mysql_project/result/result_debug.jtl

    ps:特别注意:

    (1) master 机器和slave机器上的 jmeter部署目录,保持一致

    (2) master机器上的执行脚本有参数配置文件,比如 csv等,则应该,在slave机器对应的目录上都copy放置一份

    (3) 在master执行脚本,尽量都写成 绝对路径方式,脚本名称以及报告路径

    参考查看:https://www.cnblogs.com/waitingzxy/p/11393049.html  https://www.cnblogs.com/miaomiaokaixin/p/6116927.html

  • 相关阅读:
    java 设计模式 (一)
    多Linux安装
    华北电力大学 研究生学院 笔记
    电力大学 专升本
    19年 考研究生 过程
    netcat-flume-logger
    大神写的K8S 二进制安装笔记
    非常全的Mybatis学习笔记
    Docker-compose部署gitlab
    docker-compose 配合 dockerfile使用
  • 原文地址:https://www.cnblogs.com/xiaofeng91/p/13203031.html
Copyright © 2011-2022 走看看