RocketMQ(17) -- RocketMQ工作原理 -- 消息的清理

RocketMQ的消息清理策略主要基于commitlog文件,不直接删除单条消息,而是按文件进行清理。文件过期时间默认为72小时,当达到凌晨4点或者磁盘空间使用率达到特定阈值(如75%和85%)时,系统会自动清理过期文件。删除大文件会导致性能下降,因此选择在访问量小的时段进行。建议使用ext4文件系统以优化删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分布式消息队列RocketMQ

三、RocketMQ工作原理 

3.9)消息的清理

消息被消费过后会被清理掉吗?——》 不会的

消息是被顺序存储在commitlog文件的,且消息大小不定长,所以消息的清理是不可能以消息为单位进 行清理的,而是以commitlog文件为单位进行清理的。否则会急剧下降清理效率且实现逻辑复杂。

  1. commitlog文件存在一个过期时间,默认为72小时,即三天。除了用户手动清理外,在以下情况下也会被自动清理,无论文件中的消息是否被消费过:

  2. 文件过期,且到达清理时间点(默认为凌晨4点)后,自动清理过期文件

  3. 文件过期,且磁盘空间占用率已达过期清理警戒线(默认75%)后,无论是否达到清理时间点, 都会自动清理过期文件

  4. 磁盘占用率达到清理警戒线(默认85%)后,开始按照设定好的规则清理文件,无论是否过期,默认会从老的文件开始清理

  5. 磁盘占用率达到系统危险警戒线(默认90%)后,Broker将拒绝消息写入

需要注意以下几点:

1)对于RocketMQ系统来说,删除一个commitlog文件【1G大小】,是一个压力巨大的IO操作,在删除过程中,系统性能会骤然下降。所以,其默认清理时间点为凌晨4点,访问量最小的时间。也正因如此,我们要保障磁盘空间的空闲率,不要使系统出现在其它时间点删除commitlog文件的情况。

2)官方建议RocketMQ服务的Linux文件系统采用ext4。因为对于文件删除操作,ext4要比ext3性能更好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值