死分区指长期没有数据发送进来的分区,死分区存在没有被完全删除的消息就会出现假堆积。

当一个分区,长期没有数据发送进来时,就慢慢变成了死分区。死分区,通常不会造成使用问题,但却给监控报警等问题带来干扰。常见的问题就是查看堆积状态显示堆积,且堆积一直存在。这是因为死分区长期没有数据进来,消费端也不会再提交位点,超过保留时间后,位点会过期。当一个分区没有位点在服务端时,默认取最大位点-最小位点作为堆积值。此时,如果分区已死,但里面的消息并没有被完全删除时,就会出现假堆积。

一般来说,如果数据量足够多时,保留时间一到,消息就都被删除了。但如果数据量少时,消息可能要很久才会真正被删除,因为服务端存储是1G为Segment,至少保留一个Segment导致的。

解决办法就是,消息尽量发送均匀,且保证每个分区有数据。如果业务数据比较少,可以考虑定时发一些心跳数据到各个分区里面去。