WARN由于需求失败而找到了损坏的索引文件:找到了损坏的索引,索引文件

时间:2018-06-29 15:45:52

标签: apache-kafka

Kafka v0.11.0.2

Kafka代理在PST时区运行了大约一个月,然后由于操作系统补丁,管理员将时区更改为EST,并且在重新启动后,我们看到了重播消费者消息(消费者偏移量重置为0)。我们要求管理员将时区更改回PST,他们花了3天的时间进行更改。将时区更改回PST之后,在代理重新启动期间,我们看到了以下日志消息(即使对于Topics和__consumer_offsets-> WARN由于需求失败,发现损坏的索引文件:)

由于由于时区更改而重新启动Kafka代理时__consumer_offsets损坏,它真的将使用者偏移量重置为0吗?此消息后,我们再次得到了消息的重播。

  

警告:由于要求失败而找到了损坏的索引文件:找到了损坏的索引,索引文件   (/app/kafka_2.12-0.11.0.2/data/__consumer_offsets-21/00000000000000002076.index)   具有非零大小,但最后一个偏移量是2076,不大于   基本偏移量2076。}。删除中   /app/kafka_2.12-0.11.0.2/data/__consumer_offsets-21/00000000000000002076.timeindex,   /app/kafka_2.12-0.11.0.2/data/__consumer_offsets-21/00000000000000002076.index,   和   /app/kafka_2.12-0.11.0.2/data/__consumer_offsets-21/00000000000000002076.txnindex和重建索引...(kafka.log.Log)

我们如何解决消费者补偿不回到零(0)?

3 个答案:

答案 0 :(得分:3)

重新启动经纪人时,我们遇到了类似的问题。事实证明,对我们来说,这是systemd配置的问题,它等待的时间不够长,无法正确关闭Kafka服务器。

每个代理上有150个主题的350 GB数据,关闭Kafka服务器大约需要8分钟。但是,将systemd配置为仅等待90秒,以使服务器关闭,然后强制关闭服务器。重新启动服务器后,由于索引文件未正确关闭,最终将导致索引文件损坏。解决方法是在TimeoutStopSec=600 systemd配置中设置kafka.service

我们在博客文章https://blog.experteer.engineering/kafka-corrupted-index-file-warnings-after-broker-restart.html

中总结了该问题和修复程序

答案 1 :(得分:1)

删除索引文件。

此问题基于索引无法匹配日志文件。 这个问题存在很长时间,恢复方法是删除索引文件,它将重新创建。

答案 2 :(得分:0)

我遇到了这个问题,只需删除索引文件并启动kafka:

document.querySelector('meta[name="csrf-token"]')

问题已解决。请注意:此方法会丢失您当前的消息。