1. 程式人生 > >ActiveMQ測試工具

ActiveMQ測試工具

aml 壓縮 install pub 結果 端口號 創建 ftw ipa

1. 測試工具

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

1.1 安裝Erlang

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

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

    • 1.1.2 安裝問題

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

      解決辦法:
      下載安裝Git工具

      yum install git
      make clean
      make
      • 不能下載Erlang,錯誤:
        [root@localhost mqtt-test]# ./kerl build 18.3 18.3
        Verifying archive checksum...
        Checksum error, check the files in /root/.kerl/archives

      解決辦法:
      刪除archives文件夾

      [root@localhost mqtt-test]# rm -rf /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條消息頻率

    ./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條/秒

    ./emqtt_bench_pub -c 10 -I 10 -t bench/%i -s 256
    

      

1.3 Jmeter安裝使用

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

ActiveMQ測試工具