Jmeter是一个由Apache基金会推出、基于Java的通用测试软件,可以在图形化界面中很方便地制定test plan然后执行它。

一、测试环境说明

我用的是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文件中加上:

       

emqx集群客户端如何连接java emq集群原理_JMeter测试EMQ

记得路径换成你的自己的路径!!!

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、添加线程组

 

emqx集群客户端如何连接java emq集群原理_jar_02

emqx集群客户端如何连接java emq集群原理_JMeter测试EMQ_03

   4.2、添加MQTT连接测试

emqx集群客户端如何连接java emq集群原理_jar_04

emqx集群客户端如何连接java emq集群原理_JMeter集成MQTT插件_05

   4.3、生成jmx测试文件

emqx集群客户端如何连接java emq集群原理_服务器_06

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执行测试计划并生成聚合报告(执行结果报告)

emqx集群客户端如何连接java emq集群原理_emqx集群客户端如何连接java_07

   4.5、若生成了聚合报告,使用windows下的jmeter查看

     可以使用xftp将生成的jtl文件下载到本地,然后通过jmeter查看,添加--》监听器--》Aggregate Graph

emqx集群客户端如何连接java emq集群原理_emqx集群客户端如何连接java_08

emqx集群客户端如何连接java emq集群原理_JMeter集成MQTT插件_09

 各个参数什么意思,可以百度

   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" #根据内存情况,可以适当调大