在 2核4G(2C4G)的服务器上部署 Apache RocketMQ 是可行的,但需要注意资源限制,尤其是内存和线程数。RocketMQ 包含以下几个核心组件:
- NameServer:轻量级路由注册中心
- Broker:消息中转服务
- Producer/Consumer:生产者和消费者客户端
对于开发或测试环境来说,2C4G 的配置是可以接受的,但在生产环境中建议使用更高配置。
✅ 部署步骤(单机模式)
📌 环境准备
- 操作系统:Linux(如 CentOS、Ubuntu)
- Java:JDK 1.8 或以上
- 内存:至少 4GB RAM
- 磁盘空间:至少 10GB 可用空间
- 网络开放端口:9876(NameServer)、10911(Broker)
📌 步骤一:安装 JDK
# Ubuntu
sudo apt update && sudo apt install openjdk-8-jdk -y
# CentOS
sudo yum install java-1.8.0-openjdk -y
验证安装:
java -version
javac -version
📌 步骤二:下载 RocketMQ
前往官网或 GitHub 下载二进制包:
wget https://archive.apache.org/dist/rocketmq/4.9.4/apache-rocketmq-all-4.9.4-bin-release.zip
unzip apache-rocketmq-all-4.9.4-bin-release.zip -d /usr/local/rocketmq
📌 步骤三:设置环境变量(可选)
编辑 ~/.bashrc 或 /etc/profile 添加:
export ROCKETMQ_HOME=/usr/local/rocketmq
export PATH=$PATH:$ROCKETMQ_HOME/bin
应用生效:
source ~/.bashrc
📌 步骤四:调整 JVM 参数(关键优化)
由于是 2C4G 服务器,需要降低默认 JVM 内存参数。
修改 NameServer 启动脚本:
vim $ROCKETMQ_HOME/bin/runserver.sh
修改为:
JAVA_OPT="${JAVA_OPT} -Xms256m -Xmx256m"
修改 Broker 启动脚本:
vim $ROCKETMQ_HOME/bin/runbroker.sh
修改为:
JAVA_OPT="${JAVA_OPT} -Xms256m -Xmx512m"
📌 步骤五:启动 NameServer
nohup mqnamesrv &
# 查看日志确认是否启动成功
tail -f nohup.out
📌 步骤六:启动 Broker
nohup mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/broker.conf &
# 如果提示内存不足,可以进一步修改 broker.conf 中的线程池大小等参数
注意:如果你看到类似
OutOfMemoryError,需要继续调低堆内存或者增加 Swap 空间。
📌 步骤七:测试 Producer 和 Consumer
发送消息:
export NAMESRV_ADDR=localhost:9876
mqadmin updateTopicPerm -n $NAMESRV_ADDR -t TopicTest -p 6
tools.sh org.apache.rocketmq.example.quickstart.Producer
消费消息:
tools.sh org.apache.rocketmq.example.quickstart.Consumer
⚠️ 常见问题及解决
| 问题 | 解决方法 |
|---|---|
OutOfMemoryError |
调整 -Xms 和 -Xmx 到更小值 |
| Broker 启动失败 | 检查磁盘空间、端口是否被占用 |
| 无法连接 NameServer | 检查防火墙是否放行 9876 端口 |
| 消息堆积严重 | 单机性能有限,考虑升级硬件或集群部署 |
🧠 建议与注意事项
- 不推荐用于高并发生产环境
- 开发/测试用途可以正常运行
- 可以通过增加 Swap 分区缓解内存压力
- 使用
top、jstat、vmstat监控资源使用情况 - 如需持久化消息,请确保磁盘空间充足
📦 扩展部署(Docker 方式)
也可以使用 Docker 快速部署 RocketMQ:
docker run -d -p 9876:9876 -v ~/logs:/root/logs --name rmqnamesrv rocketmqinc/rocketmq mqnamesrv
docker run -d -p 10911:10911 -p 10909:10909
-v ~/logs:/root/logs
-e "NAMESRV_ADDR=宿主机IP:9876"
--name rmqbroker
rocketmqinc/rocketmq
mqbroker -n 宿主机IP:9876
✅ 总结
| 项目 | 推荐配置 |
|---|---|
| CPU | 至少 2 核 |
| 内存 | 至少 4GB |
| JDK | 1.8+ |
| 适用场景 | 开发/测试环境 |
| 不适合 | 高并发生产环境 |
如果你有具体需求(比如搭建双主从结构、Dledger 集群),欢迎继续提问,我可以提供详细配置方案。
CDNK博客