背景
看了网上很多文档,说是要设置log.retention.hour等等参数。
默认是保留7天,但我实测下来发现日志根本没有任何变化。
目前我们的kafka,一天就有400多个G,保留七天大大增加了我们的服务器成本。
不生效的设置
#设置日志只保留一个小时的
"log.retention.hours": 1
#设置大于500M就自动删除
"log.retention.bytes": "536870912"
#设置日志被标记删除后,保留多久彻底删除,1分钟
"log.segment.delete.delay.ms": 60000
#设置多久扫描一次要清理的日志
"log.cleanup.interval.mins": 3
kafka回收原理
kafka只会回收上个分片的数据
配置没有生效的原因就是,数据并没有分片,所以没有回收
kafka什么时候分片?有个参数log.roll.hours
log.roll.hours 设置多久滚动一次,滚动也就是之前的数据就会分片分出去
segment.bytes 设置日志文件到了多大就会自动分片
总结
"log.retention.hours": 1
"log.cleanup.policy": "delete"
"log.retention.bytes": "536870912"
"log.segment.delete.delay.ms": 60000
"log.cleanup.interval.mins": 3
"log.roll.hours": 1
"segment.bytes": "536870913"
"log.retention.check.interval.ms": 120000
"retention.ms": "3600000"
"retention.bytes": "536870912"
建议
log.roll.hours
retention.ms
log.retention.hours
设置的时间相同
参考文档
https://www.cnblogs.com/skycandy/p/11402214.html
https://kafka.apache.org/documentation/#brokerconfigs