kafka高速导入数据引发的磁盘占满问题

今天Kafka出现了一个问题,测试多线程高速生产数据,造成磁盘占满了。

我们的kafka配置文件策略如下:

log.retention.bytes=1073741842 	# topic每个分区的文件存储大小 1G
log.segment.bytes=536870921		# topic每个分区的每个段的文件存储大小 512M

log.retention.check.interval.ms=60000	#检测时间60s
log.segment.delete.delay.ms = 60000	#标记删除延时60s

原因:
当数据生产的很快时,比如说说刚刚超过1g,存在两个512m的段文件,和一个128m的段文件,此时不会把第一个段文件标记为删除。因为kafka的标记策略是从第二个段文件到最后一个段文件的大小之和大于设定的topic每个分区的文件存储大小(1G),才会将最开始的段文件标记为删除。
注意仅仅为标记删除,到达log.segment.delete.delay.ms后才会真正删除。
这就造成一个问题,当高速导入的时候,我们检测时间要1分钟,标记删除的文件延时依然要1分钟,我们最大删除一个文件需要两分钟,然而这两分钟可能已经导入3个G的数据,已经形成了多个段文件,这就造成了数据堆积。一个分区假如堆积了5个G,那么十个分区就是50个G。

你可能感兴趣的:(遇到的问题)