分布式压测
Whisper Lv5

JMeter分布式采用C/S架构,一台Master控制多台Slave,Master将压测脚本分发给所有Slave,Slave同时向被测服务发起请求,最后把结果回传给Master,Master汇总生成最终报告。

场景

  • 单机压测时,压测机CPU/网络已打满,被测服务器资源还很空闲
  • 模拟跨地域、多节点的真实用户

Linux 安装JMeter - Slave

注意: Master和所有Slave的JMeter版本、JDK版本必须完全一致

1
2
3
4
5
6
7
8
9
cd /usr/local
# 下载JMeter
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.6.3.zip
# 安装unzip
yum install -y unzip
# 解压
unzip apache-jmeter-5.6.3.zip
# 重命名
mv apache-jmeter-5.6.3 jmeter

配置JMeter环境变量

1
2
3
4
5
6
7
8
9
# 编辑环境变量配置
vim /etc/profile
# 在文件末尾添加-使用vim添加
export JMETER_HOME=/usr/local/jmeter
export PATH=$PATH:$JMETER_HOME/bin
# 刷新配置
source /etc/profile
# 验证
jmeter -v

配置Master

修改JMeter配置文件,添加所有Slave的IP。

1
2
3
4
remote_hosts=SlaveIP:1099,SlaveIP2:1099,SlaveIP3:1099.....

# 关闭SSL
server.rmi.ssl.disable=true

重启JMeter。

配置Slave

1
2
server.rmi.ssl.disable=true
server.rmi.localhost=xx.xx.xx.xx

开放的端口

1099, 4000-6000, 被测系统端口。

启动slave的jmeter服务

1
nohup ./jmeter-server > /usr/local/jmeter/bin/jmeter-server.log 2>&1 &

Master连接Slave

运行远程启动,配置的Linux Slave IP.

执行分布式压测

1
2
3
4
jmeter -n -t D:\JMeter\script\xxx.jmx 
-R xx.xx.xx.xx
-l D:\JMeter\result\dist_result.jtl
-e -o D:\JMeter\report\dist_report