使用Jmeter在linux环境实现分布式负载

分布式意义:在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能

  • 一、Jmeter分布式执行原理
    1. Jmeter分布式测试时,选择其中一台作为调度机(master/Controller),其它机器做为执行机(slave/Agent)
    2. 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的
    3. 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总
    4. 分布式测试原理:如下图
      使用Jmeter在linux环境实现分布式负载
  • 二、执行机(slave)配置
    1. slave机上需要安装Jmeter,使用rz命令上传jmeter压缩文件,然后解压
      使用Jmeter在linux环境实现分布式负载
    2. 默认一般给的用户不是管理员,则修改用户环境变量即可:vi ~/.bashrc ,在文件末尾添加该行 export PATH=$PATH:/home/mdrsopen/apache-jmeter-4.0-performance/bin ,此路径为jmeter的的路径,修改完毕,输入:wq退出,执行 source ~/.bashrc
      使用Jmeter在linux环境实现分布式负载
      使用Jmeter在linux环境实现分布式负载
      • 输入jmeter -v,出现下图证明配置成功
        使用Jmeter在linux环境实现分布式负载
    3. 进入jmeter的bin目录,修改jmeter-server文件,指定主机ip
      使用Jmeter在linux环境实现分布式负载
      • 去掉RMI_HOST_DEF前面的#,末尾的XX改成当前主机ip使用Jmeter在linux环境实现分布式负载
    4. 可以对负载机端口进行修改,默认为1099,也可以修改成自己需要的端口,修改完毕,输入:wq退出使用Jmeter在linux环境实现分布式负载
    5. 输入./jmeter-server启动负载机,出现如下界面,证明启动成功 使用Jmeter在linux环境实现分布式负载
    6. 多台slave的话,重复1~5步骤就好
  • 三、调度机(master)配置
    1. 脚本:一个devops平台的查询接口使用Jmeter在linux环境实现分布式负载
    2. 找到Jmeter的bin目录下jmeter.properties文件,修改如下配置,IP和Port是slave机的IP以及自定义的端口(负载机端口有一台自定义为1234,有一台默认为1099):remote_hosts=10.16.69.174:1234,10.16.18.21:1099使用Jmeter在linux环境实现分布式负载
      • 多台slave之前用","隔开,我这配置了2台,可以看到标红的这个就是上面截图slave的IP和Port
    3. 打开Jmeter,选择运行,有启动、远程启动、远程全部启动三个选项:
      启动:就是启动当前master(调度机),把调度机当负载机单独执行
      远程启动:可以选择执行需要的负载机
      远程全部启动:顾名思义,就是启动所有的负载机
    4. 选择远程启动-->10.16.18.21:1099
      • master结果,这里我只启动了10.16.18.21:1099这一台slave,所以只有一个结果(线程数和循环次数都是1):使用Jmeter在linux环境实现分布式负载
      • slave控制台信息:
        使用Jmeter在linux环境实现分布式负载
    5. 选择远程启动-->远程全部启动:
      • master结果,全部启动,我配置了2台slave,所以有两次执行结果使用Jmeter在linux环境实现分布式负载
  • 四、调度机(slave)使用命令执行分布式测试
    • widows环境执行
      • jmeter -n -t 监听设置.jmx -r -l log.jtl
      • 参数说明 :
        -n  告诉jmeter使用非GUI模式执行测试
        -t   执行的测试脚本名
        -r  远程执行 , 在Jmter.properties文件中指定的所有远程服务器
        -l  结果文件,如果不写路径,则在执行目录生成使用Jmeter在linux环境实现分布式负载
    • linux环境命令相同
  • 五、其它说明:
    1. 调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
    2. 调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
    3. 每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
    4. 执行机(slave)设置的端口,首先要保证未被占用,可以使用该命令进行查询,netstat -anp|grep 端口  如果查询为空则可以进行配置,如下使用Jmeter在linux环境实现分布式负载
    5. 查询有值,则代表该端口已经被占用,需要换一个端口使用Jmeter在linux环境实现分布式负载

猜你喜欢

转载自blog.51cto.com/6183574/2322003
今日推荐