今天偶然看了一眼kafka可视化工具发现,设置了kafka日志定时清理却没有生效
从图中可以很明显的看到最早的数据是9月24号三点半的,我设置的过期时间为36个小时,而当前时间为9月26号的十点半,正常来讲应该早就被删除了。
然而却一直还在topic中,事实上kafka的日志清理并不是哪个topic中数据过期了就立马清除了,而是根据设置的分片大小将接收的数据进行分片,旧的数据达到指定分片大小便分了出去然后kafka定期将这个分片删除。
可以看到最早的分片数据的更新时间为25号的11点半,还没有达到36个小时,所以并没有删除。出现这种情况主要是因为在topic中旧的数据在还没有过期的时候又有新的数据进来并且因为数据量的缘故没有达到指定分片大小。
在这个过程中有几个重要的控制参数,分片大小(segment.bytes)、分片时间(segment.ms)、清理时间(retention.ms),至于更详细的网上资料很多,这里就不再赘述了。
总结,看到kafka的topic中还有超出清理时间范围的数据,大概率是旧数据所在的文件的更新时间并没有超出清理时间,最后有啥问题欢迎在评论区留言。