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

  • 金蝶Apusic负载均衡器

  • 金蝶Apusic分布式消息队列

    • 产品白皮书
    • Product Whitepaper
    • 產品白皮書
    • 产品更新说明
    • 统一管控台

    • V2.0.6(最新)

    • V2.0.6_for_kafka

    • V2.0.6_for_rabbitmq

    • V2.0.6_for_rocketmq

    • V2.0.6_for_MQTT

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

      • 繁體中文

        • 產品介紹
        • 技術規範
        • 安裝手冊
        • 快速入門
        • 管控台使用者手冊
        • 核心引擎使用者手冊
        • 開發手冊
        • 遷移手冊
        • 維運手冊
        • 效能調優
    • V2.0.5

    • V2.0.4

    • V2.0.3

  • 金蝶Apusic分布式缓存

  • 金蝶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)
#性能優化手冊

← 維運手冊 发版说明→

  • 浅色模式