CentOS上搭建Jmeter分布式环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS上搭建Jmeter分布式环境相关的知识,希望对你有一定的参考价值。

参考技术A 笔者近段时间,由于业务需要从公有云上迁移到私有云上,而私有云集群的服务器性能未知,需要对私有云集群的服务器进行性能测试,需要压测客户端产生大并发量,而单台压测客户端由于本省性能限制无法产生大量并发,所以考虑搭建分布式压测环境。

前提:

master(主控机)和slave(被控制)上需要安装相同版本的JDK和Jmeter

slave环境配置:

1、打开jmeter安装环境下的bin目录,打开jmeter.properties,修改以下2个参数:

server_port=1099(实测,不修改也可以)

server.rmi.localport=1099(实测,不修改也可以)

server.rmi.ssl.disable=true(必须修改)

2、修改jmeter-server配置:

不修改的话,slave端运行./jmeter-server命令时,会出现如下错误提示

master环境配置:

1、打开jmeter安装环境下的bin目录,打开jmeter.properties,修改以下4个参数:

remote_hosts=IP1:port,IP2:port("="后接的ip为slave的IP及端口号)

server_port=1099

server.rmi.port=1234

server.rmi.localport=1099

server.rmi.ssl.disable=true

如果master运行测试计划时出现以下错误,则需要设置master的server.rmi.ssl.disable=true

如果salve运行./jmeter-server时出现如下错误,也同样需要修改slave的server.rmi.ssl.disable=true

2、修改bin下jmeter.sh文件(实测这部不修改也行)

set rmi_host=-Djava.rmi.server.hostname=本机IP(此IP为本机IP)

set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%

3、运行

运行slave,进入jmeter的bin目录下,先运行slave的jmeter-server文件,运行成功截图如下:

运行master,进入jmeter的bin目录下,运行如下命令:

./jmeter -n -t 测试计划 -R slave1的IP:slave2端口,slave2的IP:slave2端口 -l 测试结果

运行成功后,master界面显示如下

测试计划启动后,slave截图如下

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集群搭建,也不知道什么理由一直拖到了现在,疫情期间在家办公,也不知道啥时候上班啥时候下班,趁着孩子睡觉,记录下。

以上是关于CentOS上搭建Jmeter分布式环境的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter分布式压力测试环境配置

CentOS 7 上hadoop伪分布式搭建全流程完整教程

Jmeter实现分布式并发

jmeter分布式环境

环境搭建-CentOS集群搭建

搭建JEESZ分布式架构1--CentOs下安装jdk7(环境准备)