首页 > 解决方案 > WARN 由于要求失败,发现损坏的索引文件:发现损坏的索引,索引文件

问题描述

卡夫卡 v0.11.0.2

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

由于时区更改导致 Kafka 代理重新启动时 __consumer_offsets 损坏,它真的将消费者偏移量重置为 0 吗?在这条消息之后,我们再次得到了消息的重播。

WARN由于要求失败,发现损坏的索引文件:发现损坏的索引,索引文件 (/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。 -0.11.0.2/data/__consumer_offsets-21/00000000000000002076.txnindex 和重建索引... (kafka.log.Log)

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

标签: apache-kafka

解决方案


当我们重新启动代理时,我们遇到了类似的问题。事实证明,对我们来说,这是一个systemd配置问题,没有等待足够长的时间来正确关闭 Kafka 服务器。

我们在每个具有 150 个主题的代理上拥有 350 GB 的数据,关闭 Kafka 服务器大约需要 8 分钟。但是,systemd 被配置为只等待 90 秒让服务器关闭,然后它的强制终止服务器。当服务器重新启动时,它最终会损坏索引文件,因为它没有正确关闭。修复是TimeoutStopSec=600kafka.servicesystemd 配置中设置。

我们在一篇博文中总结了这个问题和修复:https ://blog.experteer.engineering/kafka-corrupted-index-file-warnings-after-broker-restart.html


推荐阅读