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分布式性能测试管理平台 性能测试平台示例案例 《完结篇》