JMeter 分布式压测原理及实战避坑指南

Posted 七月的小尾巴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMeter 分布式压测原理及实战避坑指南相关的知识,希望对你有一定的参考价值。

为什么要做分布式?

之前我们讲过如何在Linux环境下,用单机进行压测,但是实际工作中,有时候我们需要用多台机器进行压测。那么什么情况下我们需要用多台机器进行压测呢?当我们一台机器不够的情况下,就需要用多台机器。

那么怎么去鉴定机器到底够不够呢?这个主要看我们压力机的资源(主要判断在CPU,超过80%则表示不够用了)。如果说我们在LInux环境下运行JMter,运行的过程中,是会消耗我们服务器的资源,如cup、内存等。如果说我们机器资源不够了,那么测试出来的数据是不准的。如我们tps压不上去,很有可能就是服务器资源不行了,在这种情况下,我们通常都需要拓展机器。

分布式压测原理

在这里插入图片描述

  • JMeter分布式压测是选择一台作为调度机(master),其他机器作为执行机(slave),当然一台机器也可以既做调度机,也做执行机
  • 调度机执行脚本的视乎,master会将 jmx脚本分发到slave中,slave拿到脚本以后以非GUI的形式开始执行。
  • slave执行完毕知乎,将结果返回给master,并有master进行结果的汇总。

分布式测试步骤:

系统在HOSTS文件中进行类似 本机IP 主机名的配置,如10.0.0.23 zhoucentos,否则启动jmeter server会报错!

首先,我们来查看本机ip和hostname
在这里插入图片描述
查看之后,通过 vi/etc/hosts进行配置,将ip和hostname配置进去并保存。每台机器都配置。

在这里插入图片描述

  • 在每台机器上都部署jmeter

  • 如果java脚本,将java脚本和相关lie包都放在jmeter目录/ext下

  • 将jmeter的场景文件jmx上传到主jmeter的任意位置,参数文件放到每一台压力机上(存放目录要相同)

  • 没台机器修改jmeter.properties文件,ssl.disable=true (去掉注释)
    在这里插入图片描述

  • 在每台机器上进入到jmeter的bin目录下,都启动 nohup ./jmeter-server &(后台启动jmeter-server服务)
    在这里插入图片描述
    查看启动日志,成功了
    在这里插入图片描述

  • 在主jmeter的bin目录下,修改jmeter.properties,将其中的remote_host修改作为压力机的两台机器ip。remote_host=127.0.0.1,192,168.0.102
    在这里插入图片描述

  • 在主jmeter的机器上,执行jmter -n -t xxx.jmx -| result.jtl -r(示例,具体根据目录和路径自定义)

    -r 则表示分布式压测,如果每加,则是单机压测

注意:
1、如果是http脚本,在controller的机器上有脚本文件即可;
2、如果是Java脚本,在每一台机器上都的有脚本文件和依赖的jar包

在这里插入图片描述

可以看到已经执行成功了~

避坑:

这里在执行的过程中,连接从机失败了,主要原因是因为阿里云安全组中没有添加默认端口1099。

命令行配置IP

前面我们在 jmeter.properties 文件中,配置了从机的ip,其实还有一种方式可以不用修改配置文件,命令行的方式可以运行,也可以达到相同的效果。

 jmeter -n -t Linux.jmx -l result3.jtl -R 127.0.0.1,192.168.2.120

温馨提示

如果在分布式压测过程中,想要终止压测,千万不要在Linux上按 ctrl + c 强制终止程序,这样会知道主程序挂了之后,从机未接受到执行,会一直持续运行。当你再次从主机上运行脚本,从机仍然会在上一个脚本的程序中运行。

如果想要终止程序,可以执行命令行./shutdown.sh ,通知master终止程序,然后master 再去通知salve停止运行。

cd 进入到JMeter 的 bin 目录下
输入 ./shutdown.sh 命令停止脚本

以上是关于JMeter 分布式压测原理及实战避坑指南的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter远程模式原理及环境搭建

JMeter 4.0 分布式测试原理及填坑注意事项

性能测试 性能测试实战Jmeter性能测试平台开发,性能测试平台架构解析 ,性能测试平台搭建 分布式性能压测平台 Jmeter分布式性能测试管理平台 性能测试平台示例案例 《完结篇》

Jmeter分布式压测

jmeter避坑指南

jmeter分布式压测实践及踩坑记录(linux压力机)