【持续更新】Kafka常用优化
磁盘占用过大优化
生产环境服务器目前生产上kafka占用磁盘地方过大。因为数据量大建议优化。
目前kafka 使用的是默认配置,默认配置中有两项配置可优化
log.retention.hours
清理超过指定时间清理
log.retention.bytes
超过指定大小后,删除旧的消息
目前默认配置 存放时间是7天而且大小无限大,我们可以将存放时间缩小且设定默认大小(存在风险是可能会丢数据)
配置字段名 | 含义 | 默认值 |
---|---|---|
log.cleanup.policy | 日志清理保存的策略(delete|compact)两种 | delete |
log.retention.hours | 日志保存的时间(hours,minutes,ms)三种可选 | 168(7day) |
log.retention.bytes | 删除前日志允许保存的最大值 | -1(无限) |
log.segment.delete.delay.ms | 日志文件被真正删除前的保留时间 | 60000(60s) |
log.cleanup.interval.mins | 每隔一段时间多久调用一次清理的步骤 | 10 |
log.retention.check.interval.ms | 周期性检查是否有日志符合删除的条件(新版本用) | 300000 |
注:日志的真正清除时间。当删除的条件满足以后,日志将被“删除”,但是这里的删除其实只是将该日志进行了“delete”标注,文件只是无法被索引到了而已。但是文件本身,仍然是存在的,只有当过了log.segment.delete.delay.ms 这个时间以后,文件才会被真正的从文件系统中删除。
以上配置只对默认配置,属于全局配置,并不一定对全部topic起效,如果以上配置对你的topics不起效果,说明该topics有独立的特殊配置,用以下命令查询该topics的特殊配置(重载配置)
先查看topic的描述信息
1 | #假设localhost:2182是zookeeper的ip和端口,__consumer_offsets是要查询的topics |
如果想让该配置跟随server.conf配置,则执行以下命令,一个个删除特殊配置
1 | $ bin/kafka-configs.sh --zookeeper localhost:2182 --entity-type topics --entity-name __consumer_offsets --alter --delete-config cleanup.policy |
如果想修改,则用以下命令
1 | $ bin/kafka-configs.sh --zookeeper localhost:2182 --entity-type topics --entity-name __consumer_offsets --alter --delete-config cleanup.policy=delete |
然后你就会发现,日志基本被清空了!!!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mr.Pu 个站博客!
评论