【发布时间】:2017-05-14 12:08:25
【问题描述】:
我安装并配置了 confluent kafka。并且 kafka 以 1GB 的堆大小运行。
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" #from /bin/kafka-server-start
我创建了一个只有一个分区的主题“事物数据”,并使用自动化作业每 5 秒将一些数据注入该主题。每条消息的大小约为 2400 字节。
我看到的是我的主题的最小偏移量变化太频繁。这意味着 kafka 队列能够在给定的时间点保存很少的记录。我查看了 /var/log/kafka/thing-data-0/ 中的主题消息日志文件大小
[hduser@laptop thing-data-0]$ ll
-rw-r--r--. 1 confluent confluent 10485760 Dec 30 17:05 00000000000000148868.index
-rw-r--r--. 1 confluent confluent 119350 Dec 30 17:05 00000000000000148868.log
[hduser@laptop thing-data-0]$ ll
-rw-r--r--. 1 confluent confluent 10485760 Dec 30 17:08 00000000000000148928.index
-rw-r--r--. 1 confluent confluent 54901 Dec 30 17:08 00000000000000148928.log
[hduser@laptop thing-data-0]$ ll
-rw-r--r--. 1 confluent confluent 10485760 Dec 30 17:12 00000000000000148988.index
-rw-r--r--. 1 confluent confluent 38192 Dec 30 17:13 00000000000000148988.log
如您所见,日志文件非常频繁地翻转。每次旧文件都被标记为 .deleted 并在配置的时间后被删除。
以下是与 /etc/kafka/server.properties 中的日志相关的配置设置。
log.roll.hours=168
log.retention.hours=168 #i tried with log.retention.ms as well .. :-)
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
当我重新启动 kafka 时,文件如下所示。
-rw-r--r--. 1 confluent confluent 10485760 Dec 30 17:21 00000000000000149099.index
-rw-r--r--. 1 confluent confluent 0 Dec 30 17:21 00000000000000149099.log
我怀疑 .index 文件大小有问题,因为它设置为最大值(segment.index.bytes 默认值为 10485760)。 (我怀疑这是因为 kafka 集群运行了将近一个月)
不确定这是怎么回事,任何帮助将不胜感激。
我在下面给出了一些参考。
http://kafka.apache.org/documentation/
https://stackoverflow.com/questions/28586008/delete-message-after-consuming-it-in-kafka
【问题讨论】:
-
您还指定了哪些其他自定义配置?例如,您是否指定了 'log.index.interval.bytes' ?此外,.index 文件应该是预先分配的,所以它的大小是正确的。
-
感谢 amethystic.. 看起来您对每次分配的索引文件是正确的。 issues.apache.org/jira/browse/KAFKA-1554 .. 让我从帖子中删除该部分以避免混淆。我没有添加 log.index.interval.bytes.. 所以应该默认为 4096
-
会不会是File.lastModified检索到的最后修改时间为零触发频繁删除日志段?
-
你写的消息的时间戳是什么,你使用什么版本?在早期版本的 Kafka 中,日志滚动是基于挂钟时间触发的,但后来的版本使用记录时间戳进行日志滚动。因此,如果您使用最新的 Kafka 编写带有旧时间戳的消息,则可能会非常频繁地触发日志滚动。
-
感谢 Mathias 提供的信息。我不知道这一点。我正在使用 kafka 0.10.0.1 。从链接issues.apache.org/jira/browse/KAFKA-4099 看来,基于时间的日志滚动是从 0.10.1.0 开始应用的......这是正确的吗?
标签: logging apache-kafka rollover