You need to enable JavaScript to run this app.
文档中心
云原生消息引擎

云原生消息引擎

复制全文
下载 pdf
最佳实践
eMQTT-Bench 测试 EMQX
复制全文
下载 pdf
eMQTT-Bench 测试 EMQX
eMQTT-Bench 是一款开源的 MQTT Benchmark性能测试工具,云原生消息引擎 MQTT 版可以兼容 eMQTT-Bench 工具。借助本文,可以实现通过 eMQTT-Bench 工具完成对云原生消息引擎 MQTT 版的性能压测。
准备工作
  • 创建 ECS 实例,计算规格为16核CPU,32GiB内存,推荐型号 ecs.c3i.4xlarge。详细操作参见通过向导购买实例
注意事项
  • 请确保 ECS 和 MQTT 服务器部署在相同的 VPC 内。
  • 因 eMQTT-Bench 对新操作系统兼容性未完全适配,ECS 操作系统请选择 CentOS 7.9。
  • ECS 单张网卡最大推荐 50000 TCP连接,如果测试连接数大于 50000,请在一台 ECS 上挂载多张网卡;如果测试连接数大于 20万,请使用多台 ECS 组合完成测试。
  • 例如 20万连接数测试,请挂载 4 张网卡(一张主网卡,三张辅助网卡),使每张网卡发起 50000 MQTT 连接。例如 100万连接数测试,请使用 5 台 ECS 发起测试。
操作步骤
  1. ECS 网卡调优。
  1. 完成 ECS 初始化配置(如未配置,单张网卡最大 2.8万 MQTT 连接)。
  • sysctl -w net.ipv4.ip_local_port_range="500 65535"
    echo 1000000 > /proc/sys/fs/nr_open
    ulimit -n 100000
  1. 配置辅助网卡路由(如未配置,则只能通过主网卡发送流量)。
  • wget http://mirrors.ivolces.com/extra-tools/centos/7/rpms/multi-nic-hotlog-for-centos7-v1.0.1-1.ve1.x86_64.rpm
    yum install ./multi-nic-hotlog-for-centos7-v1.0.1-1.ve1.x86_64.rpm
  1. 配置 MQTT Client 认证用户与鉴权。
  • 创建一个用户名为 user 的用户,密码为 123456。该用户对所有 Topic 都有发布和订阅权限,详细操作参考快速构建第一个 MQTT 连接
  1. 部署 eMQTT-bench。
  1. 在 ECS 中新建 eMQTT-Bench 目录。
  • mkdir emqtt-bench && cd emqtt-bench
  1. 从 github emqtt-bench release 下载 eMQTT-Bench。
  • 如果 ECS 操作系统使用 CentOS 7.9,则必须选择 el7-amd64 发行包。复制地址,并在 ECS 中使用 wget 下载。
  • 如网络卡顿,可以本地下载该文件再上传到对象存储 TOS,设置文件的读写权限为公共读。ECS 可以通过该文件的 TOS 地址完成下载。
  • wget https://github.com/emqx/emqtt-bench/releases/download/0.4.34/emqtt-bench-0.4.34-el7-amd64.tar.gz
  1. 解压缩包,并切换到 bin 目录。
  • tar zxf emqtt-bench-0.4.34-el7-amd64.tar.gz
    cd bin
  1. 运行 ./emqtt_bench 命令,测试是否安装成功。
  • 其中,-h 为要连接的 MQTT 服务器 VPC TCP 接入点地址,需要根据实际情况替换。
  • ./emqtt_bench conn -h ${mqtt-xxxxxxxxxxxx.mqtt.ivolces.com} -p 1883 --username user --password 123456 -c 10 -i 10
  1. 在多个 ECS 控制台中分别执行以下命令。
  • 假设 192.168.2.1 为主网卡 IP 地址,192.168.2.11/12/13 为辅助网卡 IP 地址。
  • # 指定通过主网卡发送流量
    ./emqtt_bench conn -h ${mqtt-xxxxxxxxxxxx.mqtt.ivolces.com} -p 1883 -c 50000 -i 1 --username user --password 123456 --ifaddr 192.168.2.1
    # 从第一张辅助网卡发送流量,下同(如果失败,则未配置辅助网卡路由)
    ./emqtt_bench conn -h ${mqtt-xxxxxxxxxxxx.mqtt.ivolces.com} -p 1883 -c 50000 -i 1 --username user --password 123456 --ifaddr 192.168.2.11
    ./emqtt_bench conn -h ${mqtt-xxxxxxxxxxxx.mqtt.ivolces.com} -p 1883 -c 50000 -i 1 --username user --password 123456 --ifaddr 192.168.2.12
    ./emqtt_bench conn -h ${mqtt-xxxxxxxxxxxx.mqtt.ivolces.com} -p 1883 -c 50000 -i 1 --username user --password 123456 --ifaddr 192.168.2.13
  • 压测命令参数说明如下所示,其他参数说明请参考 eMQTT-Bench 教程
  • 参数名称
    参数解释
    conn
    构建连接命令
    -h
    MQTT 服务器的 VPC TCP 接入点地址,请根据实际情况替换
    -p
    端口信息,默认为 1883
    -c
    该网卡构建的 MQTT 连接数量,当前为 50000
    -i
    连接的发送间隔,当前为 1毫秒,可以适当增大该值
    --username
    MQTT Client 认证的用户名
    --password
    MQTT Client 认证的密码
    --ifaddr
    指定该流量发起者的网卡 IP 地址
最近更新时间:2025.08.04 17:30:05
这个页面对您有帮助吗?
有用
有用
无用
无用