一、问题描述
RockerMQ 启动 mqbroker 时报错:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/rocketmq-4.9.2/hs_err_pid27897.log
二、解决方法
RockerMQ 默认配置的内存是 8G,当内存过小时会出现该问题。解决方法是修改 runserver.sh 和 runbroker.sh 的内存参数进行适配,具体修改如下:
vi runserver.sh
将:
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
调整为:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=320m"
vi runbroker.sh
将:
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
调整为:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn256m"
然后重启服务:
nohup sh bin/mqnamesrv &
nohup sh bin/mqbroker -n localhost:9876 &