Pulsar集群有部分topic存在慢消费,导致ledger log文件无法及时清理,导致磁盘撑爆

业务上某些topic存在慢消费,导致ledger log文件无法及时GC,最终磁盘占用率达到95%,broker进入readonly状态。在业务上暂时无法及时修复时,配置namespace 级别TTL以及backlog quota策略,如下:
backlogQuotaCheckEnable=true
preciseTimeBaseBacklogQuotaCheck=true
backlogQuotaCheckIntervalInSeconds=60
backlogQuotaDefaultLimitSecond=900
backlogQuotaDefaultRetentionPolicy=consumer_backlog_eviction
ttlDurationDefaultInSecond=900

bookie配置中gcWaitTime=600000

现象:业务消息生产切入pulsar集群,观测到ledger所在磁盘占用存在下降趋势,但很快就持续上升。直到业务消息切出pulsar集群,下一个gc周期开始大量回收ledger log,磁盘占用率恢复正常。详见下图:


图中磁盘占用率拐点都是切出消息生产触发。

不排除业务上存在消费数据后丢失ack的情况。需要一个保证集群可用性的方案

先参考手工gc回收的方法。

如果是业务消费慢导致磁盘数据无法回收的情况,可以配置sh pulsar-admin topics set-message-ttl 来设置消息自动确认,避免这种情况,其次是建立监控策略,当发现堆积及时通知业务处理。