分享知识 传递快乐

RocketMQ 启动 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:
# /home/guest/rocketmq-4.9.2/hs_err_pid1518.log

rocketmq 默认配置的内存时8G,当内存过小是就会出现这种问题。关键日志 Cannot allocate memory,这种问题是内存分配时出错导致。

解决办法:

修改 rocketmq/bin/ 下的服务启动脚本 runserver.sh 、runbroker.sh 中对于内存的限制。

示例:

# vi bin/runserver.sh  #调整nameserver启动的内存(如果服务器内存比较大,可以不调整),如果内存较小,不调整此文件,可能导致无法启动
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=320m"

# vi bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn256m"

—————————
如有不足请留言指正
相互学习,共同进步