ActiveMQ测试工具

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"}}

    解决办法:
    下载安装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,结果如下:

    [root@localhost emqtt_benchmark-master]# ./emqtt_bench_sub --help
    Usage: emqtt_bench_sub [--help ] [-h []] [-p []]
                       [-c []] [-i []] [-t ]
                       [-q []] [-u ] [-P ]
                       [-k []] [-C []]
                       [--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,结果如下:

    [root@localhost emqtt_benchmark-master]# ./emqtt_bench_pub --help
    Usage: emqtt_bench_pub [--help ] [-h []] [-p []]
                       [-c []] [-i []]
                       [-I []] [-u ]
                       [-P ] [-t ] [-s []]
                       [-q []] [-r []] [-k []]
                       [-C []] [--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应用测试,但后来扩展到其他测试领域。

可以参考我的另一片帖子

你可能感兴趣的:(MQTT,ActiveMQ,activemq,测试工具)