ActiveMQ壓力測試工具(emqtt_benchmark和jmeter)
阿新 • • 發佈:2018-12-14
1. 測試工具
目前使用兩種測試工具進行壓力測試 1. Jmeter 測試單客戶端收發多主題,測試高併發,大資料量時的接收效率 2. emqtt_benchmark測試多客戶端收發主題,測試高吞吐量下伺服器效能
1.1 安裝Erlang
emqtt_benchmark測試工具使用Erlang語言開發,必須在Linux的環境下執行,因此需要先安裝Erlang語言環境。
解決辦法: 刪除archives資料夾
[[email protected] mqtt-test]# rm -rf /root/.kerl/archives
- 不能下載Erlang,錯誤:
[[email protected] mqtt-test]# ./kerl build 18.3 18.3 Verifying archive checksum... Checksum error, check the files in /root/.kerl/archives
1.2 emqtt_benchmark安裝使用
這是一個簡單的MQTT基準工具用Erlang編寫的。該工具的主要目的是基準測試MQTT伺服器可以支援的併發連線數。
官網下載
- 1.2.1 下載安裝
將下載下來的
emqtt_benchmark-master.zip
放置一個目錄下,並解壓縮, 使用make進行編譯安裝unzip emqtt_benchmark-master cd emqtt_benchmark-master ls make
-
1.2.2 訂閱命令 在目錄
emqtt_benchmark-master
下執行命令:./emqtt_bench_sub --help
,結果如下:[[email protected] emqtt_benchmark-master]# ./emqtt_bench_sub --help Usage: emqtt_bench_sub [--help <help>] [-h [<host>]] [-p [<port>]] [-c [<count>]] [-i [<interval>]] [-t <topic>] [-q [<qos>]] [-u <username>] [-P <password>] [-k [<keepalive>]] [-C [<clean>]] [--ifaddr <ifaddr>] --help help information //伺服器ip地址 -h, --host mqtt server hostname or IP address [default: localhost] //伺服器埠號 -p, --port mqtt server port number [default: 1883] //最大連線客戶端數量 預設200 -c, --count max count of clients [default: 200] //客戶端連線間隔時間,預設10毫秒 -i, --interval interval of connecting to the broker [default: 10] //訂閱的主題 %i=自增長序號 -t, --topic topic subscribe, support %u, %c, %i variables //訊息服務qos等級, //0=最多一次 伺服器與 客戶端 互動1次 //1=至少一次 伺服器與 客戶端 互動2次 //2=僅有一次 伺服器與 客戶端 互動4次 -q, --qos subscribe qos [default: 0] //客戶端使用者名稱 -u, --username username for connecting to server //使用者端密碼 -P, --password password for connecting to server //維持客戶端活躍的時間 預設300秒 -k, --keepalive keep alive in seconds [default: 300] //客戶端斷開後是否清除session 預設true -C, --clean clean session [default: true] //代理ip介面 --ifaddr local ipaddress or interface address
-
舉例:建立1000個併發客戶端,並每秒接收100條訊息頻率
1
.
/
emqtt_bench_sub
-
c
1000
-
i
10
-
t bench
/
%
i
-
q
2
-
1.2.3 釋出命令 執行命令:
./emqtt_bench_pub --help
,結果如下:[[email protected] emqtt_benchmark-master]# ./emqtt_bench_pub --help Usage: emqtt_bench_pub [--help <help>] [-h [<host>]] [-p [<port>]] [-c [<count>]] [-i [<interval>]] [-I [<interval_of_msg>]] [-u <username>] [-P <password>] [-t <topic>] [-s [<size>]] [-q [<qos>]] [-r [<retain>]] [-k [<keepalive>]] [-C [<clean>]] [--ifaddr <ifaddr>] --help help information -h, --host mqtt server hostname or IP address [default: localhost] -p, --port mqtt server port number [default: 1883] -c, --count max count of clients [default: 200] -i, --interval interval of connecting to the broker [default: 10] //客戶端釋出訊息的時間間隔 預設1000毫秒 -I, --interval_of_msg interval of publishing message(ms) [default: 1000] -u, --username username for connecting to server -P, --password password for connecting to server -t, --topic topic subscribe, support %u, %c, %i variables //訊息位元組大小 預設256位元組 -s, --size payload size [default: 256] -q, --qos subscribe qos [default: 0] -r, --retain retain message [default: false] -k, --keepalive keep alive in seconds [default: 300] -C, --clean clean session [default: true] --ifaddr local ipaddress or interface address
-
舉例:創造10個客戶,每個客戶端釋出訊息的速度每秒100條,吞吐量1000條/秒
1
.
/
emqtt_bench_pub
-
c
10
-
I
10
-
t bench
/
%
i
-
s
256
1.3 Jmeter安裝使用
Apache JMeter是Apache組織開發的基於Java的壓力測試工具。下載 用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴充套件到其他測試領域。