ActiveMQ壓力測試工具(emqtt_benchmark和jmeter)

happym_m發表於2018-10-09

ActiveMQ測試工具

1. 測試工具

目前使用兩種測試工具進行壓力測試 
1. Jmeter 測試單客戶端收發多主題,測試高併發,大資料量時的接收效率 
2. emqtt_benchmark測試多客戶端收發主題,測試高吞吐量下伺服器效能

1.1 安裝Erlang

emqtt_benchmark測試工具使用Erlang語言開發,必須在Linux的環境下執行,因此需要先安裝Erlang語言環境。

    • 1.1.1 安裝Erlang 
      可以參考這篇帖子,使安裝別的特別簡單。

    • 1.1.2 安裝問題

      下載安裝Git工具

      yum install git
      make clean
      make
      • 沒有安裝git,比如出現以下錯誤: 
        ERROR: Rebar requires version {1,5} or higher of git to process {git,"git://github.com/talentdeficit/jsx.git",{tag,"v0.9.0"}}

解決辦法: 
刪除archives資料夾

[root@localhost mqtt-test]# rm -rf /root/.kerl/archives
  • 不能下載Erlang,錯誤: 
    [root@localhost 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,結果如下:

    [root@localhost 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 -1000 -10 -t bench/%-2

      

  • 1.2.3 釋出命令
    執行命令:./emqtt_bench_pub --help,結果如下:

    [root@localhost 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 -10 -10 -t bench/%-256

      

1.3 Jmeter安裝使用

Apache JMeter是Apache組織開發的基於Java的壓力測試工具。下載 
用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴充套件到其他測試領域。

相關文章