前言:測試服的一臺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