当前位置: 首页 > news >正文

开发避坑指南(24):RocketMQ磁盘空间告急异常处理,CODE 14 “service not available“解决方案

异常信息

Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14  
DESC: service not available now, maybe disk full, CL:  0.94 CQ:  0.94 INDEX:  0.94, maybe your broker machine memory too small.

异常背景

一个项目里面用到了rocketmq,往rocketmq里面发送数据的时候报错。

异常分析

该异常表明 RocketMQ Broker 服务不可用,主要与磁盘空间和内存资源相关。从异常信息里面看,mq服务不可用了,报错的可能原因是磁盘满了或者内存不足。

报错中的 CL: 0.94 CQ: 0.94 INDEX: 0.94 表示 CommitLog、ConsumeQueue 和索引文件的磁盘使用率已达94%。

CommitLog是消息的物理存储核心组件,所有消息按顺序追加写入CommitLog文件持久化(固定大小,通常1GB)。

ConsumeQueue 是逻辑消费队列,按Topic和队列维度构建索引文件,存储指向CommitLog的指针(含消息物理偏移量、大小等)。

解决办法

临时方法1:

清理磁盘空间,给RocketMQ 腾出足够的磁盘空间,博主这里就是因为C盘的空间满了。删除RocketMQ安装目录/logs/下的历史日志文件和清理RocketMQ安装目录/store/中已消费的消息文件,清理这两个大文件后释放了很多空间。

临时方法2:

修改 runbroker.cmd文件,文件最后增加一行:

JAVA_OPT="$JAVA_OPT -Drocketmq.broker.diskSpaceWarningLevelRatio=0.99"

放宽磁盘警戒比例至99%,重启RocketMQ服务。

长期优化方案1:

以windows环境为例,根据机器配置修改JVM参数,修改 runbroker.cmd文件(注意不是runserver.cmd),文件最后增加一行(示例为8GB内存机器):

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx2g -Xmn512m -XX:MetaspaceSize=128m"

内存分配比例‌

-Xms1g -Xmx2g:堆内存初始1GB,最大2GB(占总内存25%)
-Xmn512m:新生代设为堆内存的25%-50%(推荐512MB)

这个比例并不是固定不变的,根据实际情况进行调优。

长期优化方案2:

日志路径分离,将日志文件存储到独立磁盘中。

http://www.dtcms.com/a/329058.html

相关文章:

  • 2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
  • python基于Hadoop的超市数据分析系统
  • 高防CDN和高防IP的各自优势
  • Sklearn 机器学习 异常值检测 孤立深林
  • 《设计模式之禅》笔记摘录 - 15.观察者模式
  • 【完整源码+数据集+部署教程】军事伪装目标分割系统源码和数据集:改进yolo11-EMSC
  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权
  • Four.Meme 重大更新:Bonding Curve Cap 从 24 BNB 降至 18 BNB,这意味着什么?
  • 浏览器面试题及详细答案 88道(23-33)
  • 【密码学实战】国密SM2算法介绍及加解密/签名代码实现示例
  • 用了Cursor AI之后,我的编程效率翻倍了?——一位程序员的真实体验分享
  • Java毕业设计选题推荐 |基于SpringBoot的水产养殖管理系统 智能水产养殖监测系统 水产养殖小程序
  • 二层业务端口相关配置
  • STM32H743开发周记问题汇总(串口通讯集中)
  • 免费生成视频,Coze扣子工作流完全免费的视频生成方案,实现图生视频、文生视频
  • Windows 系统 上尝试直接运行 .sh(Shell 脚本)文件
  • 从感知到执行:人形机器人低延迟视频传输与多模态同步方案解析
  • 基于大数据spark的医用消耗选品采集数据可视化分析系统【Hadoop、spark、python】
  • ABP vNext 的工业时间序列治理:InfluxDB vs TimescaleDB 落地对比
  • Python 环境隔离实战:venv、virtualenv 与 conda 的差异与最佳实践
  • Electron自定义菜单栏及Mac最大化无效的问题解决
  • 【自动化运维神器Ansible】playbook变量文件深度解析:实现配置分离与复用
  • JS的学习5
  • 微软正式将GPT-5接入Microsoft Copilot Studio(国际版)
  • 单例模式的理解
  • 【密码学实战】国密TLCP协议简介及代码实现示例
  • FemalePower项目学习笔记
  • ASP.NET 上传文件安全检测方案
  • 怎么使用python查看网页源代码
  • FreeRTOS创建多线程详解