奋斗
努力

rocketmq生产服务器的配置?

云计算

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(轻量级)

二、操作系统调优

  1. 文件句柄数限制

    # /etc/security/limits.conf
    * soft nofile 1000000
    * hard nofile 1000000
  2. 内核参数优化

    # /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
  3. 关闭透明大页(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

✅ 优势:自动故障转移、强一致性、无需手动切换主从。


七、监控与运维

  1. 监控项

    • 消息堆积量
    • 消息发送/消费 TPS
    • 磁盘使用率
    • JVM GC 情况
    • 网络延迟
  2. 工具推荐

    • RocketMQ Console(开源控制台)
    • Prometheus + Grafana(集成 JMX Exporter)
    • ELK 收集日志
  3. 备份策略

    • 定期备份 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级等),我可以进一步定制化配置建议。

未经允许不得转载:云服务器 » rocketmq生产服务器的配置?