前言:测试服的一台kafka好久没有接收到消息了,看了下日志,maybe disk full。。。。。
问题分析:
提示很明确嘛,磁盘占用问题。想来配置broker的时候有个占比参数 diskMaxUsedSpaceRatio=75%,应该是说 磁盘占用到这个比例就开始报警了。
一开始我以为是 消息数据占到了磁盘的75%,df -h 命令 看下磁盘的占用情况
storePathRootDir=/home/rocket 看了下归属,/目录确实占用了 96%。想当然的改了存储数据的根路径到 还有41G剩余空间的/mnt目录下,重启测试写消息
还是不行,然后立马想到,获取的可能是程序所在磁盘的占比,程序也在 /目录下,遂转移程序到 /mnt目录下,重启 nameserver 和 broker,写消息成功了
总结:
diskMaxUsedSpaceRatio=75% 磁盘占比判断的是MQ程序所在磁盘的占比,部署时应该将程序和数据都放在剩余空间足够的磁盘中。
后记:
刚写完博客,回去一看,又报错了,查了查还有个 storePathCommitLog 路径忘记改了,啪啪打脸,所以记得 rocketmqHome、storePathRootDir、storePathCommitLog 都要放在空间足够的磁盘下的目录里面。。。
最后再研究,其实关注的是 commitLogDiskRatio、consumeQueueDiskRatio,分别对应 storePathCommitLog 、storePathRootDir