New
EMQX 6.1.0 新特性:可回放的 MQTT 消息流、增强的多租户能力与更多数据集成 →

EMQX MySQL 存储性能测试报告

基准报告2021-10-29

测试目的

测试 EMQX 企业版 4.3.4 单节点并发连接 10 万、以每秒 5 万 QoS 1、payload 200B 的消息发布速率持久化至MySQL 所需 EMQX 资源及响应时间等性能指标。

测试架构

测试环境、机器配置及测试工具

测试环境

华为云 北京四区

测试工具

XMeter 企业版 v3.0

EMQX、MySQL、测试机配置:

服务数量版本操作系统CPU内存云主机型号
EMQX1企业版v4.3.6Centos 7.832核64GC6.8xlarge2
MySQL1社区版8.0.27Centos 7.816核64GC6.4xlarge4
XMeter管理机23.2.0Centos 7.88核16GC6.2xlarge2
XMeter压力机10/Centos 7.88核16GC6.2xlarge2

测试场景

如测试架构图中所示,XMeter 压力机模拟 10 万 MQTT 客户端向 EMQX 发起连接,新增连接速率为每秒 2000,客户端心跳间隔(keep alive)300秒。所有连接成功后每个客户端每 2 秒发送一条 QoS 为 1、payload 为 200B 的消息,所有消息通过规则引擎存储至 MySQL。

测试执行1个小时。

规则引擎配置如下:

  • MySQL 资源设置
  • 规则设置

  • 启用异步、批量插入
  • MySQL 调优配置
    修改MySQL配置文件/etc/my.conf:
    [mysqld]
    # 默认为 128M,修改为 64G 的 70%
    # Start at 70% of total RAM for dedicated server.
    innodb_buffer_pool_size = 44000M
    # 缓冲池实例个数
    innodb_buffer_pool_instances = 8
    max_heap_table_size = 4096M
    tmp_table_size = 4096M
    

测试总结

如以上结果所示,EMQX 64C128G 配置下可以支持 10 万连接、每秒 5 万QoS 1、payload 200B 的消息写入MySQL,所有消息都实时写入数据库。消息吞吐期间,EMQX 所在机器 CPU user 使用范围 45% ~ 68%,CPU user平均使用 57%,CPU idle 范围 20%~50%,平均 36%。内存使用稳定。

详细测试结果

详细测试结果请填写右侧表单获取完整版 PDF 文件。

相关资源