EMQX压力测试,程序崩溃

测试环境

  • EMQX 版本
    emqx-5.0.20-windows-amd64.zip

  • EMQX部署所在服务器配置
    操作系统:Windows Server 2019 Datacenter
    处理器: Intel(R) Xeon(R) CPU E3-1225 V2 @ 3.20GHZ 3.20 GHz
    内存:8.00 GB

  • 部署方式
    将EMQX压缩包解压到D:\Program Files下,运行如下命令启动:
    .\bin\emqx start

  • EMQX的dashboard中配置
    1、访问控制->认证,只启用Built-in Database,增加了17个用户(含1个超级用户)
    2、访问控制->权限,只启用Built-in Database,所有用户只允许发布主题${username}/${clientid}/monitor/+
    3、数据集成->数据桥接,创建了5个webhook数据桥接
    4、数据集成->规则,创建了80条规则,对应不同的业务

  • EMQX配置文件emqx.conf增加了自动订阅配置
    auto_subscribe {
    topics = [
    {
    topic = “${username}/${clientid}/control/#”
    qos = 2
    rh = 0
    rap = 0
    nl = 0
    }
    ]
    }

  • 压力测试工具
    Apache JMeter + mqtt-xmeter-2.0.2-jar-with-dependencies_2.jar

  • 测试参数
    1、30秒内连接500个客户端
    2、每个客户端间隔5s发布一个1024长度的字符串消息


  • 测试结果


5.0有个已知问题是 “规则过多时会导致消息发布占用比较多的CPU和内存“

还有几个建议是:

  1. 方便尝试在没有任何规则的情况下,做一次测试么?
  2. 建议在 Linux 上部署,进行压力测试
  3. 压力发起端(JMeter)避免和 EMQX 在同一个机器