Apusic文档中心
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
文档中心
  • 金蝶Apusic应用服务器

  • 金蝶Apusic负载均衡器

  • 金蝶Apusic分布式消息队列

    • 产品白皮书
    • 产品更新说明
    • 统一管控台

    • V2.0.6(最新)

    • V2.0.6_for_kafka

    • V2.0.6_for_rabbitmq

    • V2.0.6_for_rocketmq

    • V2.0.6_for_MQTT

      • 产品简介
      • 功能与技术规格
      • 安装手册
      • 快速使用手册
      • 管控台用户手册
      • 消息引擎用户手册
      • 开发手册
      • 迁移手册
      • 运维手册
      • 性能优化手册
    • V2.0.5

    • V2.0.4

    • V2.0.3

  • 金蝶Apusic分布式缓存

  • 金蝶Apusic分布式配置中心

  • 金蝶Apusic Java开发工具包软件

  • 金蝶Apusic全文检索

性能优化手册

# 前言

本文档介绍金蝶Apusic分布式消息队列for MQTT(Apusic Distributed Message Queue,简称:ADMQ for MQTT)的性能优化最佳实践,帮助用户充分利用系统性能。

# 适用对象

本文档适用于IT信息化业务负责人、研发经理、软件项目经理、软件架构师、运维工程师。

# 相关文档

了解更多ADMQ for MQTT产品相关的信息,请参阅以下ADMQ for MQTT产品手册文档集:

序号 手册文档 说明
1 金蝶Apusic分布式消息队列for MQTT 快速使用手册 简单介绍了如何快速上手使用ADMQ for MQTT 。
2 金蝶Apusic分布式消息队列for MQTT 安装手册 详细介绍如何在各操作系统上安装ADMQ for MQTT,以及ADMQ for MQTT服务启停等操作。
3 金蝶Apusic分布式消息队列for MQTT 消息引擎用户手册 详细介绍 ADMQ for MQTT 消息引擎相关功能的使用、配置、管理及配套工具的使用方法。
4 金蝶Apusic分布式消息队列for MQTT 管控台用户手册 详细介绍ADMQ for MQTT管控台相关功能的使用和操作说明。
5 金蝶Apusic分布式消息队列for MQTT 开发手册 详细介绍基于各开发语言进行ADMQ for MQTT客户端应用开发的说明。
6 金蝶Apusic分布式消息队列for MQTT 迁移手册 详细介绍从MQTT Broker迁移到ADMQ for MQTT的说明。
7 金蝶Apusic分布式消息队列for MQTT 运维手册 详细介绍ADMQ for MQTT的监控、运维、安全加固等运维说明。
8 金蝶Apusic分布式消息队列for MQTT 性能优化手册 详细介绍ADMQ for MQTT性能调优的说明。

# 技术支持

ADMQ for MQTT产品提供全面的技术支持服务,您可以通过以下方式获得技术支持:

  • 网址:www.apusic.com
  • 电话:400-855-5800
  • 邮箱:support@apusic.com
  • 金蝶云社区:https://vip.kingdee.com/?productId=73&productLineId=14&lang=zh-CN

您在取得技术支持时,请提供如下信息:

  1. 您的姓名

  2. 公司信息与联系方式

  3. 操作系统及其版本

  4. 产品版本号

  5. 出现异常及错误的日志、截图等详细信息

# 系统层面优化

# 操作系统优化

# 文件描述符

# 查看当前限制
ulimit -n

# 修改限制(/etc/security/limits.conf)
* soft nofile 2097152
* hard nofile 2097152
1
2
3
4
5
6

# 内核参数

# /etc/sysctl.conf

# TCP 连接优化
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# 网络缓冲区
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728

# 端口范围
net.ipv4.ip_local_port_range = 1024 65535

# 内存优化
vm.swappiness = 10

# 应用配置
sysctl -p
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 磁盘优化

优化项 建议
文件系统 使用 XFS 文件系统
挂载选项 noatime,nodiratime
磁盘调度 使用 noop 或 deadline
SSD 优化 启用 TRIM
# 查看磁盘调度算法
cat /sys/block/sda/queue/scheduler

# 设置为 deadline
echo deadline > /sys/block/sda/queue/scheduler

# 挂载选项(/etc/fstab)
/dev/sda1 /var/lib/admq-mqtt xfs noatime,nodiratime 0 0
1
2
3
4
5
6
7
8

# MQTT 配置优化

# 连接管理

参数 说明 默认值 推荐值
max_connections 每个监听器最大连接数 1024000 根据硬件调整
max_conn_rate 每秒最大连接速率 1000 根据硬件调整
zone.external.idle_timeout 空闲连接超时 7200s 根据业务调整
zone.external.keepalive_backoff Keepalive 检测倍数 0.75 0.75
# etc/admq-mqtt.conf
listeners.tcp.default {
  bind = "0.0.0.0:1883"
  max_connections = 1024000
}
1
2
3
4
5

# 会话配置

参数 说明 默认值 推荐值
session_expiry_interval 会话过期时间 2h 根据业务调整
max_subscriptions 单个客户端最大订阅数 infinity 1000-10000
max_inflight 飞行窗口大小 32 64-256
max_mqueue_len 消息队列长度 1000 根据内存调整
mqueue_store_qos0 是否存储 QoS 0 消息 true false(大并发时)
# etc/admq-mqtt.conf
zone.external {
  session_expiry_interval = 2h
  max_subscriptions = 10000
  max_inflight = 128
  max_mqueue_len = 10000
  mqueue_store_qos0 = false
}
1
2
3
4
5
6
7
8

# 报文大小

参数 说明 默认值 推荐值
max_packet_size 最大报文大小 1MB 根据业务调整
max_clientid_len 最大 ClientID 长度 65535 1024
max_topic_levels 最大主题层级 128 7-10
max_topic_alias 最大主题别名数 65535 65535
# etc/admq-mqtt.conf
zone.external {
  max_packet_size = 1MB
  max_clientid_len = 1024
  max_topic_levels = 10
  max_topic_alias = 65535
}
1
2
3
4
5
6
7

# JVM 配置

# bin/admq-mqtt
JAVA_OPTS="-server -Xms4g -Xmx4g -Xmn2g"
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:G1HeapRegionSize=16m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=2g"
1
2
3
4

# Erlang VM 优化

# vm.args
+P 2097152      # 最大 Erlang 进程数
+Q 2097152      # 最大 Erlang Port 数
+A 64           # 异步线程池大小
1
2
3
4

# 客户端优化

# QoS 选择

场景 推荐 QoS
高频 Telemetry 数据,可容忍丢失 QoS 0
一般业务消息 QoS 1
关键控制命令 QoS 2

# 连接管理

  1. 使用连接池:避免频繁创建和关闭连接
  2. 合理设置 Keepalive:避免过短的心跳间隔
  3. 启用自动重连:防止网络异常导致连接中断
  4. 控制订阅数量:单个客户端订阅过多主题会影响性能

# 消息大小

  1. 控制 Payload 大小:避免发送过大消息
  2. 批量发送:减少网络往返次数
  3. 避免频繁重连:长连接优于短连接

# 集群优化

# 节点部署策略

部署策略 说明 适用场景
同机房部署 所有节点在同一机房 低延迟、高吞吐
跨机房部署 节点分布在不同机房 高可用、容灾
异构部署 不同配置节点混合 成本优化

# 负载均衡

  1. DNS 轮询:通过 DNS 轮询分发客户端连接
  2. 硬件负载均衡:使用 LVS、F5 等硬件负载均衡器
  3. 软件负载均衡:使用 Nginx、HAProxy 等软件负载均衡器

# 会话持久化

模式 说明 适用场景
内存会话 会话数据存储在内存 高性能、低可靠性
持久化会话 会话数据持久化到磁盘 高可靠性

# 监控与调优

# 性能指标

指标 健康范围 优化建议
CPU 使用率 < 70% 扩容或优化业务逻辑
内存使用率 < 80% 增加内存或优化配置
磁盘使用率 < 80% 扩容或清理日志
连接数 < max_connections 扩容或优化连接使用
消息吞吐 根据硬件配置 优化生产者或扩容
消息延迟 < 10ms 优化网络或消费者
慢订阅数 < 100 优化消费逻辑

# 性能测试

# 使用 emqtt_bench 工具测试
./emqtt_bench conn -h localhost -p 1883 -c 10000 -i 10

# 参数说明
# -h: Broker 地址
# -p: 端口
# -c: 并发连接数
# -i: 连接间隔(毫秒)

# 发布测试
./emqtt_bench pub -h localhost -p 1883 -c 1000 -I 10 -t "sensor/%c/temperature" -s 100

# 订阅测试
./emqtt_bench sub -h localhost -p 1883 -c 1000 -t "sensor/+/temperature"
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 瓶颈分析

  1. CPU 瓶颈:加密解密、消息路由、规则引擎处理
  2. 内存瓶颈:大量连接、会话数据、消息队列
  3. 磁盘瓶颈:持久化消息、日志写入
  4. 网络瓶颈:大量小消息、大 Payload、网络延迟

# 常见问题优化

# 连接数不足优化

  1. 增加文件描述符限制
  2. 调整 max_connections 参数
  3. 扩容集群节点
  4. 使用负载均衡分发连接

# 消息延迟优化

  1. 优化网络配置
  2. 减少 QoS 2 使用
  3. 优化消费者处理逻辑
  4. 使用共享订阅均衡负载

# 内存不足优化

  1. 增加物理内存
  2. 减少会话过期时间
  3. 限制消息队列长度
  4. 关闭 QoS 0 消息存储

# 消息堆积优化

  1. 增加消费者数量
  2. 优化消费者处理逻辑
  3. 使用共享订阅
  4. 检查 ACL 规则是否阻止消费

# 性能优化检查清单

# 系统层面

  • [ ] 文件描述符限制已调整
  • [ ] 内核参数已优化
  • [ ] 磁盘使用 XFS 文件系统
  • [ ] 网络参数已优化
  • [ ] 系统资源充足(CPU、内存、磁盘)

# MQTT 配置

  • [ ] max_connections 合理设置
  • [ ] 会话过期时间合理设置
  • [ ] 飞行窗口大小合理设置
  • [ ] 消息队列长度合理设置
  • [ ] 报文大小限制合理设置
  • [ ] Erlang VM 参数已优化

# 客户端优化

  • [ ] QoS 选择合适
  • [ ] Keepalive 间隔合理
  • [ ] 订阅数量合理控制
  • [ ] 消息大小合理控制
  • [ ] 使用长连接和自动重连

# 集群优化

  • [ ] 节点部署策略合适
  • [ ] 负载均衡已配置
  • [ ] 集群规模满足业务需求
  • [ ] 会话持久化策略合适
编辑页面 (opens new window)
#性能优化手册

← 运维手册 发版说明→

  • 浅色模式