前言:通过jmeter分布式压力测试部署方案可实现百万个设备同时上传数据到物联网服务器,同时可生成测试报告
一)Windows下安装Jmeter5.1.1
安装JDK
1、登录官网:www.oracle.com
2、登录用户
3、
4、
5、
6、
7、
8、运行该程序
9、配置环境变量
这里补充说明一下,主机与压力机的jdk版本要保持一致,不然会出错
jmeter版本也要保持一致
jdk下载地址:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html
安装Jmeter
1、官网下载 jmeter 安装 zip 包
打开链接:https://jmeter.apache.org/download_jmeter.cgi
找到:Apache JMeter 5.1.1
找到:Binaries
下载Apache JMeter 5.1.1.zip
2、配置系统环境变量
电脑搜索“高级系统设置”,查看高级系统属性,点击“环境变量”按钮,操作“系统属性”
3、设置jmeter解压目录的JMETER_HOME环境变量:
系统属性:
新建
变量名:JMETER_HOME
变量值:jmeter安装的路径(浏览目录:定位到jmeter-zip包的解压目录)
确定
4、设置jmeter的bin目录的path环境变量:
系统属性:
找到一个变量名为path(也可能是Path或PATH)的系统变量
编辑
新增变量值:变量值后加一个英文分号“;”,分号后输入jmeter的bin路径(浏览目录:定位到jmeter安装包下的bin目录)
确定
5、设置jmeter的classpath变量:
系统属性:
找到一个变量名为CLASSPATH的系统变量
编辑
变量值后新增:
;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
确定
6、最后点击所有弹出窗后的“确定”,确认保存所设置的3个系统变量。
7、运行jmeter
进入jmeter下的bin目录,点击打开jmeter.bat文件
jemeter汉化
option
choose language
Chinese simplified
bin目录下jmeter.properties用编辑器打开,搜索language,将注释去掉,zh_CN加上
重新启动JMeter
安装jmeter插件
1、登录:https://jmeter-plugins.org/wiki/PluginsManager/后下载插件jmeter-plugins-manager-1.3
2、将插件放入Jmeter安装目录下的lib/ext
3、重启jmeter
4、选项下打开jmeter管理器
5、下载插件
jmeter目录结构
二)安装MQTT插件
1、下载插件安装
链接: 下载地址.
2、将mqtt-xmeter-2.0.2-jar-with-dependencies.jar插件放入apache-jmeter-5.1.1\lib\ext目录下
验证
三)编写压力测试脚本
需求:47个客户端同时向物联平台上行数据,同时每隔3秒上行一次
1、添加线程组
2、CSV 数据文件设置
3、添加仅一次控制器
MQTT Connect只需要连接一次物联网,不需要重复连接,所以需要添加逻辑控制器
4、在仅一次控制器下添加MQTT Connect
server name or ip :服务器公网ip地址
user name :客户端的用户名填写位置,由于进行了csv参数化处理,这里填写变量名 ${product}
5、添加循环控制器
控制MQTT Pub Sampler组件无线循环发送数据到物联平台
6、在循环控制器下添加MQTT Pub Sampler
7、在MQTT Pub Sampler下添加固定定时器
控制MQTT Pub Sampler发送数据的时间间隔
8、根据业务实际需要添加监听器
9、测试是否成功
失败的话,检查下前面是否配置出错,业务不同配置的数据是不一样的,不能生搬硬套
四)使用centos作为分布式分机
1、使用软碟通将centos7.4写入u盘
2、配置网络服务
[root@localhost]# cd /etc/sysconfig/network-scripts
[root@localhost]# vi ifcfg-ens33
将ONBOOT=no 改为 ONBOOT=yes
[root@localhost]# service network restart
[root@localhost]# systemctl restart network.service
[root@localhost]# systemctl status network
3、使用xshell连接centos
查看网卡ip
[root@localhost]# ip addr
4、解决centos ifconfig无法使用问题
查找ifconfig命令在哪个包里
[root@localhost ~]# yum search ifconfig
[root@localhost ~]# yum install net-tools.x86_64
5、安装lrzsz
lrzsz可用于上下行文件
[root@localhost ~]# yum -y install lrzsz
下载文件,执行命令sz
上传文件,执行命令rz
6、上传文件
链接: 下载地址.
上传apache-jmeter-5.1.1.tgz 与 jdk-8u261-linux-x64.tar.gz 文件到/home目录
7、安装jdk1.8
[root@localhost ~]# tar -zxvf jdk-8u261-linux-x64.tar.gz
[root@localhost ~]# java -version
[root@localhost ~]# mv jdk1.8.0_261/ jdk1.8
[root@localhost ~]# yum -y install vim
[root@localhost ~]# vim /etc/profile
加入以下内容:
export JAVA_HOME=/home/jdk1.8
export JRE_HPME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
8、安装jmeter
[root@localhost ~]# tar -zxvf apache-jmeter-5.1.1.tgz
[root@localhost ~]# vim /etc/profile
加入以下内容:
export JMETER=/home/apache-jmeter-5.1.1
export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER/bin/:$PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# jmeter -v
出现以下内容才成功:
[root@localhost home]# jmeter -v
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \
/ _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) |
/ ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
/_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 5.1.1 r1855137
Copyright (c) 1999-2019 The Apache Software Foundation
五)控制机与压力机联合配置
通过前面的配置,Windows为主机控制端,centos为肉鸡,当然Windows也可以作为肉鸡
1、修改主机控制端配置文件
修改apache-jmeter-5.1.1\bin目录下的jmeter.properties文件
# Remote Hosts - comma delimited
remote_hosts=192.168.5.227:2099,192.168.5.200:2099
#remote_hosts=localhost:1099,localhost:2010
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=2099
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
#---------------------------------------------------------------------------
# Include Controller
#---------------------------------------------------------------------------
192.168.5.227:2099为主机控制端IP与RMI的端口号
192.168.5.200:2099为肉鸡的IP与RMI的端口号
server.rmi.ssl.disable=true的注释去掉
使用2099端口而没有使用1099的原因是最后远程控制的时候肉鸡拒绝了主机控制端,没搞懂是啥原因,如果你们1099能用就用1099吧…
2、修改肉鸡的配置文件
[root@localhost bin]# cd /home/apache-jmeter-5.1.1/bin/
[root@localhost bin]# vim jmeter.properties
修改内容如下:
# Remote Hosts - comma delimited
remote_hosts=192.168.5.200:2099
#remote_hosts=localhost:1099,localhost:2010
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=2099
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
#---------------------------------------------------------------------------
# Include Controller
编辑文件jmeter-server
[root@localhost bin]# vim jmeter-server
修改内容如下:
# One way to fix this is to define RMI_HOST_DEF below
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.5.200
3、生成分布式测压安全密钥
运行主机控制端apache-jmeter-5.1.1\bin目录下的create-rmi-keystore.bat脚本,生成密匙时会问一些问题 设置答案,最后输入Y 敲击键盘enter键确认即可
在当前目录下会生成rmi_keystore.jks密钥文件
将此密钥文件放入肉鸡的/home/apache-jmeter-5.1.1/bin/目录下
chmod 777 rmi_keystore.jks
六)分布式压力测试
1、执行肉鸡服务器启动
[root@localhost bin]# cd /home/apache-jmeter-5.1.1/bin/
[root@localhost bin]# ./jmeter-server
2、主机控制端启动
3、运行脚本查看是否成功
4、主机端作为肉鸡
需要启动 jmeter-server.bat
然后启动 jmeter.bat