侧边栏壁纸
博主头像
DJ's Blog博主等级

行动起来,活在当下

  • 累计撰写 133 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

【RocketMQ】常见问题

Administrator
2022-03-17 / 0 评论 / 0 点赞 / 63 阅读 / 3653 字

【RocketMQ】常见问题

启动内存不足

现象

启动报错,提示无法分配足够的内存

Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (8388608k) is equal to or greater than the entire heap (8388608k).  A new max generation size of 8388544k will be used.
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589869056, 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 8589869056 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/java/rocketmq-all-4.7.0-bin-release/bin/hs_err_pid10070.log

原因

bin目录下启动namesrv与broker的runbroker.shrunserver.sh文件中默认分配的内存(8g)太大,而系统实际内存却太小导致启动失败

解决方法

修改bin目录下面的runbroker.shrunserver.sh文件,修改JAVA_OPT配置

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"

-Xms1g:设定程序启动时占用内存大小为1g

-Xmx1g:设定程序运行期间最大可占用的内存大小为1g

-Xmn1g:年轻代的heap大小为1g

No route info of this topic

现象

消息发送端启动,后台日志报No route info of this topic异常

原因

broker启动的时候没有设置自动创建topic,broker默认是禁止自动创建topic

解决方法

方法一:启动broker时加上autoCreateTopicEnable=true参数

nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &

方法二:修改broker配置文件,添加autoCreateTopicEnable=true配置

vim broker.conf
...
autoCreateTopicEnable = true
...

在启动broker时,指定配置文件

nohup sh mqbroker -n localhost:9876 -c ../conf/broker.conf &

-c:手动指定配置文件

broker启动IP访问不到

现象

broker启动之后,无法访问,IP显示为docker的网卡IP

原因

在不配置brokerIP1时,会根据当前网卡选择一个IP作为broker的IP。当有多个IP时,默认IP可能不是期望的IP。

解决方法

修改broker配置文件,设置brokerIP1为指定的IP

vim broker.conf
...
brokerIP1 = 192.168.247.130
...

在启动broker时,指定配置文件

nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true -c ../conf/broker.conf &

-c:手动指定配置文件

磁盘空间满了

现象

生产端发送消息报错,RocketMQ返回如下异常

org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14  DESC: service not available now, maybe disk full, CL:  0.92 CQ:  0.92 INDEX:  0.92, maybe your broker machine memory too small.
For more information, please visit the url, http://rocketmq.apache.org/docs/faq/

原因

  • 检查磁盘空间,已用空间是95%
  • RocketMQ的默认设置只是支持90%,超过则提示空间不足

解决方法

  • 修改runbroker.sh脚本
vim /usr/local/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -Drocketmq.broker.diskSpaceWarningLevelRatio=0.99"
0

评论区