zoukankan      html  css  js  c++  java
  • jmeter 如何分布式执行

    1.在使用 JMeter 进行性能测试时,如果线程数比较大(比如需要 1000 以上的线程),单节点的配置(CPU 和内存)可能无法支持,这时可以 使用 JMeter 提供的分布式测试的功能,这是我们一般的约定,超过 1000 线程不建议使用单机压测,JMeter 本身也是 java 应用,java 应用 jvm 堆内存 heap 受负载机硬件限制,虽然我们可以调整堆内存 大小,但单机处理能力还是相对有限,此时,需要多个负载机进行 分担压力,这样可以较大的缓解负载机的性能测试瓶颈。

    2 分布式执行的基本模式

      

      在 JMeter 分布式测试时,本地 JMeter 作为控制机(Master),其它机 器做为执行机(slave)。执行时,master 会把脚本发送到每台 slave 上,slave 拿到脚本后就开始执行。执行  完成后,slave 会把结果回 传给 master,master 会收集所有 slave 的信息并汇总,请注意,在 master-slave 的模式下,所有机器的 JMeter 版本需要保持一致。

      

    3.配置:
      1)Master 节点:

        

         Windows 系统上,将下载下来的 JMeter 解压后,修改 JMeterin 目 录里的 JMeter.properties 文件,在 260 行新增 remote_hosts 配置,配置里配置的是两台 slave 主机的     ip 和 slave 主机里安装的 JMeter 的端口号。

      2)执行机 slave 配置:

        上传 JMeter 到 slave 服务器:因为 JMeter 需要有 jdk 的支持,所以将 jdk 和 JMeter 都上传到 slave 主机的/software 文件夹下,两台节点机都需要上传

          

          解压 jdk 和 JMeter 后,配置环境变量

           

          #java 环境变量:

            export JAVA_HOME=/software/jdk1.8.0_131/

            export PATH=$JAVA_HOME/bin:$PATH

            export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

          #JMeter 环境变量

            export JMETER_HOME=/software/apache-JMeter-5.1.1

            export  CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETE R_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit2.0.jar:$CLASSPATH

            export PATH=$JMETER_HOME/bin/:$PATH

            修改 JMeter 的配置

            修改 bin/JMeter.properties 文件

            改成本节点机 ip

            

             备注:该 remote_hosts 和 server_port 配置需要和本地 master 的 JMeter.properties 文件里新增的 260 行配置一致

             

             server.rmi.ssl.disable = true #否则远程执行,会报一个 ssl 错误

            #防止响应回来的数据有中文乱码

            

             同样的方法把两台从节点机器配好;

      3)执行测试:

        在 master 上原则即可执行,选择 JMeter 最上一栏运行选项点击远程 启动;同样命令行的方式也可以进行分布式执行,一般命令如下,(r 后面不 指定节点机为全部执行)

        例 3:默认分布式执行(所有分布式节点):

          JMeter -n -t test.jmx -r -l report esult.csv -j reportlog.log

        例 4:指定 IP 分布式执行:

          JMeter -n -t test1.jmx -R 192.168.10.25:1036 -l report1- result.csv -j report1-log.log

          n 表示无 GUI 运行

          t 表示要运行的 jmx 文件

          l 指生成的文件名称

          r 指远程将所有 agent 启动

    4.分布式执行一定能解决客户端瓶颈问题吗?

      上文介绍的分布式模型是典型的 master->slave 模式,理论上来 说,可以较大的缓解客户端压力,但随着 qps 达到一定的量级,在 压测过程中 master 负责收集数据,非常依赖于网段传输和磁盘写 入,本身负载会变得越来越大,同样的也会形成一定的瓶颈,请问 你有好的解决思路吗?

      刚刚我也提到过,在压测过程中 master 收集,我的方法是自己开 发 job 去驱动节点机,待压测结束后再收集结果,利用解耦的方式 去解决这样的问题,

  • 相关阅读:
    CentOS 7.0关闭默认防火墙启用iptables防火墙
    Linux下安装jdk1.8
    Linux下的tar压缩解压缩命令详解
    centos7上安装redis
    通过克隆虚拟机来创建多个虚拟机
    深度学习的网络资料
    在ubuntu中添加widows启动项的简单方法
    循环神经网络RNN的基本介绍
    统计学习——随机过程
    spark机制理解(一)
  • 原文地址:https://www.cnblogs.com/anhao-world/p/13447795.html
Copyright © 2011-2022 走看看