Jmeter搭建分布式压测环境
最近在做性能测试,本来以为一台压力机就够啦,但是在压测一个查询接口的时候,当TPS达到500多的时候就开始报错,经过定位是压力机出现啦瓶颈,于是决定对压力机做一下分布式,经过调试环境部署成功,再次压测时候问题解决。下面记录一下部署分布式环境的过程。
使用的工具及版本:
JDK:1.8.0_211
Jmeter:5.2.1
Linux:CentOS 7 2台
在部署环境之前先说一下Jmeter分布式执行原理:
jmeter在执行分布式时候,首先要选择一台作为控制的机器,一台或多台执行的机器,在开始执行压测脚本的时候,控制器会把要执行的脚本分发到一台或多台执行机上,执行机拿到脚本后开始执行,执行结束后所有的执行机把执行结果返回给控制机,控制机在把各个执行机返回的结果进行汇总。
执行原理图如下:
我们了解了执行原理,下面开始进行环境部署
1.分别在控制机和执行机上安装jdk和jmeter(两台机器的jdk和jmeter版本必须一致)
2.两台机器分别配置jdk和jmeter的环境变量,这里也把环境变量配置付给大家,方便后面当做参考
我们输入命令进入环境变量配置文件:vim /etc/profile 添加以下配置
jdk环境变量:
export JAVA_HOME=/usr/local/wangfegnwei/jdk1.8.0_211 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar /usr/local/wangfegnwei/jdk1.8.0_211 是jdk安装的目录,其他的不变
jmeter环境变量:
JMETER_HOME=/home/qa_group/apache-jmeter-5.2.1 export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin /home/qa_group/apache-jmeter-5.2.1jmeter安装的目录,其他的不变
如下图:
配置后输入命令:source /etc/profile 使配置的环境变量生效
3.分别验证控制机和压测机的jdk和jmeter是否安装好并配置好环境变量
4.环境变量配置完成后接下来配置控制机
进入控制机jmeter的bin目录下:vim jmeter.properties
a:修改:remote_hosts=执行机1的ip:端口,执行机2:端口
b:配置端口号:server_port=1099 可以自己指定 也可以使用默认的 1099
c:修改:server.rmi.ssl.disable=true
注意:控制机和执行机的 server_port 尽量保持一致 我这里用的都是 1099
5.配置执行机,进入 执行机 jmeter的bin目录下的 jmeter.properties配置文件
配置端口号:server_port=1099
修改:server.rmi.ssl.disable=true
6.把执行的脚本分别复制到2台机器同一个目录下
我把脚本都放在这个目录下:/usr/local/wangfegnwei/script/
7.执行机中输入命令启动:./jmeter-server (因为我们配置了环境变量,所以任意位置输入这个命令都可以)
我们可以设置后台启动 nohup ./jmeter-server & 这样关闭页面后也在运行
8.我们先运行一台执行机
启动命令:jmeter.sh -n -t /usr/local/wangfegnwei/script/init.jmx -R 执行机ip:1099
9.上面同样的操作启动第二胎执行机
10.运行两台执行机执行脚本
jmeter.sh -n -t /usr/local/wangfegnwei/script/init.jmx -R 执行机1ip:1099,执行机2ip:1099
11.监控结果如下图