JMeter分布式压测配置(五)
JMETER分布式压测
执行分布式的原理
盗来的图,将就用一下
-
控制机及执行安装部署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