Jmeter是一个由Apache基金会推出、基于Java的通用测试软件,可以在图形化界面中很方便地制定test plan然后执行它。
一、测试环境说明
我在Linux搭建了EMQ集群,用两台机器搭建的,然后现在准备在那两个机器上也安装JMeter,然后进行批量测试,但是由于直接使用JMeter比较麻烦,所以准备在本地Windows上也安装一个JMeter,然后生成.jmx测试计划,然后上次到服务器,用服务器上的JMeter运行测试计划。我用的是jmeter3.1
前提:JMeter是基于java的,因此必须安装jdk,无论是哪个环境的JMeter,只要使用了就得安装jdk,最新版本的jmeter5要求jdk1.8+,因此最好安装jdk1.8+,至于jdk环境变量的配置,这里就不说了,几乎所有的java开发都会,不会的百度一下吧。这个是必须要有的!!!!
如果需要jmeter3.1的,请自行下载:jmeter3.1,已经集成了MQTT插件了。
二、Linux服务器上安装jmeter
2.1、官网下载JMeter
jemeter官网下载zip文件,http://jmeter.apache.org/download_jmeter
2.2、解压zip文件,unzip?apache-jmeter-3.1.zip
2.3、配置profile文件,vim /etc/profile
在vim文件中加上:
记得路径换成你的自己的路径!!!
2.4、jmeter加上测试MQTT的插件
由于jmeter原生中没有测试MQTT,因此必须加相关的插件jar包,访问:https://github.com/emqx/mqtt-jmeter,将Download/v1.0.1目录下的mqtt-xmeter-1.0.1-jar-with-dependencies.jar下载下来然后放在jmeter文件夹lib/ext下。
为了防止gitHub上该jar对应的项目哪天停止使用了,我上传该jar到我的CSDN了,需要的可以自己下载:mqtt-xmeter-1.0.1-jar-with-dependencies.jar。
三、windows上安装JMeter
3.1、官网下载JMeter
jemeter官网下载zip文件,http://jmeter.apache.org/download_jmeter
3.2、解压,然后根据2.4的步骤,下载MQTT插件,然后放在你本地的jmeter的lib/ext下
四、开始测EMQ集群
4.1、添加线程组
4.2、添加MQTT连接测试
4.3、生成jmx测试文件
4.4、上传jmx文件到Linux上,并执行下面任何一个命令即可
jmeter -n -t /home/cesec/jmeter/test9.jmx 执行测试计划
jmeter -n -t /home/cesec/jmeter/test9.jmx -l?/home/cesec/jmeter/test9.jtl执行测试计划并生成聚合报告(执行结果报告)
4.5、若生成了聚合报告,使用windows下的jmeter查看
可以使用xftp将生成的jtl文件下载到本地,然后通过jmeter查看,添加--》监听器--》Aggregate Graph
各个参数什么意思,可以百度
4.6、查看EMQ集群是否生效了
直接登录haproxy的管理页面查看即可
五、如果有需要可以对JMeter测试服务器的优化
5.1、修改服务器参数
cat << EOF >> /etc/sysctl.conf fs.file-max = 2097152 fs.nr_open = 2097152 ### backlog - Socket 监听队列长度: net.core.somaxconn=32768 net.ipv4.tcp_max_syn_backlog=16384 net.core.netdev_max_backlog=16384 ## 可用知名端口范围: net.ipv4.ip_local_port_range=1000 65535 ## TCP Socket 读写 Buffer 设置: net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.optmem_max=16777216 #sysctl -w net.ipv4.tcp_mem='16777216 16777216 16777216' net.ipv4.tcp_rmem=1024 4096 16777216 net.ipv4.tcp_wmem=1024 4096 16777216 ## TCP 连接追踪设置: net.nf_conntrack_max=1000000 net.netfilter.nf_conntrack_max=1000000 net.netfilter.nf_conntrack_tcp_timeout_time_wait=30 ## FIN-WAIT-2 Socket 超时设置: net.ipv4.tcp_fin_timeout = 15 ## TIME-WAIT Socket 最大数量、回收与重用设置: net.ipv4.tcp_max_tw_buckets=1048576 EOF |
cat << EOF >>/etc/security/limits.conf * soft nofile 1048576 * hard nofile 1048576 EOF |
修改完毕通过sysctl –p 生效
5.2、修改jmeter配置文件
修改bin/jmeter 文件:
HEAP="-Xms4096m -Xmx8192m" #根据内存情况,可以适当调大