前几天服务器磁盘被刷爆了(阿里云默认40G硬盘),后面查下来是kafka日志文件写的。
清理策略
- log.cleanup.policy=delete : kafka日志的清理策略,默认是
delete
,就是根据配置的时间空间来清理日志;还可以配置成compact
,根据messages中的key,进行删除操作在active segment 被commit 后,会删除掉old duplicate keys无限制的时间与空间的日志保留
关于delete的相关配置
- log.retention.hours=168 : 日志保留的时间,默认是7天(7*24小时),超过这个时间的日志都会被清理掉。
- log.retention.bytes=1073741824 : 当个日志文件的最大字节数,默认1G。如果文件超出这个大小后,就会新建一个日志文件。
- log.roll.hours = 3 : 创建日志文件的周期,默认值是3,如果日志文件大小没有超过1G,就每3个小时会创建一个新的日志文件。
总结
从上面的配置可以看出,如果你数据量不大,按上面的配置,会存在56个日志文件(log.retention.hours/log.roll.hours),且日志总量不会大于56G的硬盘空间。但是如果数据量大,3个小时内数据超过了1G,就会创建很多的日志文件,这个时候的空间就没法预估了,只能通过log.retention.hours来控制日志保留时间来控制日志所占磁盘的大小。