RocketMQ 生产环境服务器的配置需要根据实际业务场景(如消息吞吐量、延迟要求、可靠性要求等)进行合理规划。以下是一个典型的 RocketMQ 生产服务器配置建议,涵盖硬件、操作系统、JVM 及 RocketMQ 本身的配置。
一、硬件配置建议(单节点)
| 组件 | 推荐配置 | 说明 |
|---|---|---|
| CPU | 16 核以上 | 高吞吐场景建议 32 核或更高 |
| 内存 | 64GB ~ 128GB | NameServer 可低配,Broker 建议 64GB 以上 |
| 磁盘 | SSD,500GB ~ 2TB | 建议使用本地 SSD,RAID 10 提高可靠性 |
| 网络 | 1Gbps 或 10Gbps 网卡 | 高吞吐场景建议 10Gbps |
| 操作系统 | CentOS 7/8、Ubuntu 20.04+ | 推荐稳定 Linux 发行版 |
💡 示例:
- Broker:32核 CPU,128GB 内存,2TB SSD,10Gbps 网络
- NameServer:8核 CPU,16GB 内存,100GB SSD(轻量级)
二、操作系统调优
-
文件句柄数限制
# /etc/security/limits.conf * soft nofile 1000000 * hard nofile 1000000 -
内核参数优化
# /etc/sysctl.conf net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.core.rmem_default = 67108864 net.core.wmem_default = 67108864 net.core.optmem_max = 40960 vm.max_map_count = 655360 -
关闭透明大页(THP)
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag添加到开机脚本
/etc/rc.local中。
三、JVM 配置(Broker)
# 示例:128GB 内存机器
-Xms64g
-Xmx64g
-Xmn32g
-XX:+UseG1GC
-XX:G1HeapRegionSize=16m
-XX:MaxGCPauseMillis=20
-XX:G1ReservePercent=20
-XX:InitiatingHeapOccupancyPercent=30
-XX:ParallelGCThreads=32
-XX:ConcGCThreads=8
-XX:+DisableExplicitGC
-verbose:gc
-Xloggc:/data/rocketmq/logs/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintAdaptiveSizePolicy
-Drocketmq.broker.quiet=true
⚠️ 注意:
- 堆内存不要超过物理内存的 70%,为 PageCache 留出空间。
- G1 GC 更适合大堆内存和低延迟要求。
四、Broker 配置文件(broker.conf)
# Broker 基础配置
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER # 或 SYNC_MASTER / SLAVE
flushDiskType = ASYNC_FLUSH # 高吞吐用异步刷盘,强一致用 SYNC_FLUSH
# 存储路径
storePathRootDir = /data/rocketmq/store
storePathCommitLog = /data/rocketmq/store/commitlog
storePathConsumeQueue = /data/rocketmq/store/consumequeue
storePathIndex = /data/rocketmq/store/index
storeCheckpoint = /data/rocketmq/store/checkpoint
abortFile = /data/rocketmq/store/abort
# NameServer 地址
namesrvAddr = 192.168.1.10:9876;192.168.1.11:9876
# 线程池配置
sendMessageThreadPoolNums = 32
pullMessageThreadPoolNums = 64
# 高可用配置(主从)
brokerId = 0 # 主节点为 0,从节点 > 0,如 1
slaveReadEnable = true # 从节点是否可读
# 消息最大大小
maxMessageSize = 1048576 # 1MB
# 开启ACL(可选)
# aclEnable = true
五、部署架构建议(生产环境)
| 组件 | 节点数 | 部署建议 |
|---|---|---|
| NameServer | 3 ~ 5 个 | 独立部署,高可用,无需数据同步 |
| Broker | 至少 2 主 2 从 | 主从复制(SYNC_MASTER + SLAVE),跨机房部署更佳 |
| Topic | 多副本 | 建议每个 Topic 配置多个队列(如 16 ~ 32) |
🌐 典型部署:
- NameServer:3 节点集群,部署在不同机器
- Broker:2 主(master-a, master-b)+ 2 从(slave-a, slave-b)
- 使用 Dledger 模式(推荐)可实现自动主从切换(替代主从模式)
六、使用 DLedger 模式(推荐用于生产)
DLedger 是 RocketMQ 的 Raft 实现,支持自动选主,避免单点故障。
broker.conf 示例(DLedger 模式):
enableDLegerCommitLog = true
dLegerGroup = dledger_group_01
dLegerPeers = n0-192.168.1.10:20911;n1-192.168.1.11:20911;n2-192.168.1.12:20911
dLegerSelfId = n0 # 每台机器不同:n0/n1/n2
sendMessageThreadPoolNums = 32
✅ 优势:自动故障转移、强一致性、无需手动切换主从。
七、监控与运维
-
监控项:
- 消息堆积量
- 消息发送/消费 TPS
- 磁盘使用率
- JVM GC 情况
- 网络延迟
-
工具推荐:
- RocketMQ Console(开源控制台)
- Prometheus + Grafana(集成 JMX Exporter)
- ELK 收集日志
-
备份策略:
- 定期备份
store目录(尤其是 commitlog) - 使用快照或 rsync 同步到备份服务器
- 定期备份
八、安全建议
- 开启 ACL 认证(
aclEnable = true) - 配置白名单 IP
- 使用 TLS 加密通信(4.9+ 支持)
- 限制 Topic 权限
总结
| 项目 | 生产环境建议 |
|---|---|
| 架构 | DLedger 多节点集群 |
| 存储 | SSD + RAID |
| JVM | G1 GC,堆内存 64G+ |
| 刷盘方式 | ASYNC_FLUSH(高吞吐)或 SYNC_FLUSH(高可靠) |
| 高可用 | 至少 3 个 NameServer,3 个 DLedger 节点 |
| 监控 | Prometheus + Grafana + 告警 |
如果你提供具体的业务场景(如:每日消息量、延迟要求、是否X_X级等),我可以进一步定制化配置建议。
云服务器