JMeter分布式压测配置(五)

JMETER分布式压测

执行分布式的原理

image
盗来的图,将就用一下

  • 控制机及执行安装部署JMeter,版本及插件要保持一致(安装好一台,打包给到另一台使用)

  • 关闭每台机器的防火墙(systemctl stop firewalled

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

  • 如果有参数化,每台机器都要有一份参数化文件,且路径需要与脚本设置的一致(每台的机器的参数化文件都是独立的)

  • 压测脚本jmx上传到控制机的任意位置,压测时会自动分发到从机执行

  • 确保主机和从机在一个网络段,否则会出现连接超时

  • 分布式压测,并发数 = 从机数*脚本设置的并发数

机器准备

控制机:192.168.1.9(Mac)
两台执行机:192.168.1.26、192.168.1.27(centos)

执行机(slave)配置

示例机器:192.168.1.26
192.168.1.27 机器同样配置

  • 1、修改 jmeter/bin/jmeter.properties 文件
cd /usr/local/apache-jmeter-5.4.1/bin

vi jmeter.properties

1、remote_hosts=192.168.1.26:1099

2、server_port=1099   //去除注释,远程机器可以连接的端口

3、server.rmi.localport=1099     // 去除注释,jmeter服务启动的端口

4、server.rmi.ssl.disable=true  //去除注释
  • 2、修改jmeter-server文件
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.26

${DIRNAME}/jmeter ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-1099} -s -j jmeter-server.log "$@"
  • 3、cmd执行命令启动jmeter服务
// jmeter-server -Djava.rmi.server.hostname=192.168.1.26
// 或者
// sh jmeter-server  // 前提已经配置jmeter-server 文件的 RMI_HOST_DEF

nohup jmeter-server &     // 后台启动 jmeter-server

出现下面返回即代表启动成功

[root@localhost bin]# nohup jmeter-server &

[1] 1406

[root@localhost bin]# nohup: ignoring input and appending output to "nohup.out"

控制机(master)配置

控制机:192.168.1.9(Mac)

  • 1、修改 jmeter.properties文件
1、remote_hosts=192.168.1.26:1099,192.168.1.27:1099    // 多台控制机之间用英文逗号分隔

2、server.rmi.ssl.disable=true

3、mode=Standard    // 去掉 # 注释
  • 2、修改 jmeter-server
vi jmeter-server

RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.9    // # 去掉,等号后面修改为控制机的ip: 192.168.1.9

控制机执行分布式压测

cd 脚本目录
jmeter -n -t login.jmx -l /report/result.jtl -r

-n:命令行执行
-t:指定的脚本
-r:使用分布式执行压测

// 指定执行机进行分布式压测
jmeter -n -t login.jmx -l /report/result.jtl -R 192.168.1.26,192.168.1.27 (执行机 IP)

远程命令行从机执行脚本

cd 脚本目录
jmeter -n -t 脚本名称.jmx  -l report/ -R 192.168.1.26    (执行机 IP)

中途停止压测

  • 不可以使用Ctrl+C强制停止,会导致从机一直忙碌,下次主机无法连接从机

  • 主机进入bin目录,执行shutdowh.sh脚本让主从机停止当前压测

分布式压测过程出现报错过多分析

  • 首先检查主机的 jmeter.log文件,检查是否有ERROR之类的错误
  • 控制机jmeter的bin目录下的jmeter-server.log文件,检查是否有ERROR之类的错误
  • 分布压测时,脚本开启结果树,写入xml文件,勾选仅错误日志,配置需要写入的信息,分析错误时查看报错原因(需要对Jmeter进行配置4.0版本测试,OK)

CentOS7 操作防火墙

Centos7 下默认的防火墙是 Firewall,替代了之前的 iptables

如果提示:Unit firewalld.service could not be found. 说明防火墙没有安装,需要安装

yum install firewalld firewall-config

重启、关闭、开启firewalld.service服务

service firewalld restart 重启
service firewalld start 开启
service firewalld stop 关闭

添加自定义端口

firewall-cmd --zone=public --permanent --add-port=8010/tcp

查看firewall服务状态

systemctl status firewalld.service

查看firewall的状态

firewall-cmd --state

查看防火墙规则

firewall-cmd --list-all

添加服务

firewall-cmd --permanent --zone=public --add-service=http

使最新的防火墙规则生效

firewall-cmd --reload
posted @ 2021-07-09 22:56  DeyouKong  阅读(426)  评论(0编辑  收藏  举报