• Linux 环境下搭建Jmeter集群(六)


    一、为什么要搭建集群?

        主要原因单台服务器没有办法满足系统的压力,通过多台服务器来缓解压力。

    二、Jmeter 分布式原理 

      1.JMeter 分布式测试,选择节点来做调度服务器,其他的节点作为执行节点,通过调度节点管理其他节点;

      2.启动服务时,调度服务器会把脚本发送到各个执行节点(脚本会发送到执行节点,但是数据不会发送),执行节点拿到脚本开始执行命令;

      3.各个执行节点执行结束以后将结果回传给调度节点,调度节点进行数据汇总;

      原理图:

     

    三、环境搭建

      1、每个节点安装Jmeter。

      2、进入Jmeter 调度节点(Jmeter  Controller )bin目录,编辑meter.properties

    jmeter.properties文件中搜索关键字remote_hosts,来添加Slave 节点的IP,默认Jmeter Server的端口是1099,如果需要修改取消server_port注释进行修改

    注意:
        如果你想Controller节点也参与施压,remote_host 内容需要添加本机地址

      3.编辑Salve 节点jmeter-server文件,将服务器的主机IP设置为固定值

       4.启动所有参与请求的节点jmeter-server,进入bin目录启动

    ./jmeter-server

    注意:
    
      1.如果你的Controller节点参与了请求,此时jmeter-server也需要启动;
      2.执行的脚本进行文件参数化,此时需要存放在jmeter-server启动的相对位置路径,而不是你脚本存储的相对路径,首先执行的时候,Controller节点会对脚本下发,他会下发到jmeter-server启动的路径,而不是你脚本存放的路径

       此时将Jmeter的分布式集群搭建完成,剩下的就是来运行测试脚本了

      5.运行测试脚本

    •  启动所有Slave节点(添加参数-r)
     jmeter -n -t osg-uus服务目标ping接口.jmx -l result/17-1-200-1/testResult.jtl  -e -o result/17-1-200-1 -r
    • 启动指定Slave节点
     jmeter -n -t osg-uus服务目标ping接口.jmx -l result/17-1-200-1/testResult.jtl  -e -o result/17-1-200-1 -R 172.29.64.11

      

     6.Jmeter 命令介绍

    参数 解释
    -n 非 GUI 模式 
    -t 运行的 JMeter 测试脚本文件
    -l 指定记录结果的文件
    -r 启动所有Slave节点
    -R 指定启动Slave节点,多个节点通过,分隔

     四、遇见的坑

      由于压测的过程由于需要改变网络环境,但是服务器域名映射依然是旧地址,在远程请求的过程中无法连通,导致分析很久,最好将hostname映射关系添加在hosts文件避免这样的错误

    其实很早想记录下Jmeter集群搭建,也不知道什么理由一直拖到了现在,疫情期间在家办公,也不知道啥时候上班啥时候下班,趁着孩子睡觉,记录下。

  • 相关阅读:
    c++中的extern
    DOS性能监视器
    谈谈.NET中的内存管理(转帖)
    static_cast和dynamic_cast
    关于对EventHandler 和e的理解(转帖)
    使用Windows Mobile 6模拟器上网的步骤(转帖)
    接口抽象类类
    当前不会命中断点 尚未加载指定的模块 windows mobile
    C# 编码的双重检验锁定
    Loadrunner 监控Unix系统性能指标的解释
  • 原文地址:https://www.cnblogs.com/mengyu/p/12343881.html
Copyright © 2020-2023  润新知