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" #根據內存情況,可以適當調大