Kafka 流 1.0:处理超时 max.poll.interval.ms 和 session.timeout.ms
Kafka streams 1.0: processing timeout with high max.poll.interval.ms and session.timeout.ms
我正在使用无状态处理器,使用 Kafka 流 1.0 和 kafka 代理 1.0.1
问题是,CustomProcessor 每隔几秒关闭一次,这导致重新平衡信号,我正在使用以下配置:
session.timeout.ms=15000
heartbeat.interval.ms=3000
// 设置为 1/3 session.timeout
max.poll.interval.ms=Integer.MAX_VALUE
// 让它变大,因为我正在执行密集的计算操作,处理 1 条 kafka 消息(NLP 操作)可能需要 10 分钟
max.poll.records=1
尽管有这种配置并且我了解 kafka 超时配置的工作原理,但我看到消费者每隔几秒就会重新平衡一次。
我已经阅读了下面的文章和其他 Whosebug 问题。关于如何调整长时间的操作并避免非常长的会话超时,这会使故障检测这么晚,但是我仍然看到意外的行为,除非我误解了什么。
对于消费者环境设置,我有 8 台机器,每台机器有 16 个代码,并且从 1 个主题和 100 个分区中消费,我遵循这个 confluent doc here 推荐的做法。
有什么指点吗?
我明白了。经过大量调试并为 kafka 流客户端和代理启用详细日志记录后,结果有两件事:
- streams 1.0.0 (HERE) 中存在严重错误,因此我将客户端版本从 1.0.0 升级到 1.0.1
- 我将消费者 属性
default.deserialization.exception.handler
的值从 org.apache.kafka.streams.errors.LogAndFailExceptionHandler
更新为 org.apache.kafka.streams.errors.LogAndContinueExceptionHandler
。
经过以上2次修改后,一切顺利,没有重启,我用grafana监控重启,过去48小时,没有一次重启。
我可能会做更多的故障排除,以确保以上 2 项中的哪一项能够真正解决问题,但我急于部署到生产环境,所以如果有人有兴趣从那里开始,请继续,否则,有时间我会做进一步的分析和更新答案!
很高兴解决了这个问题!!!
我正在使用无状态处理器,使用 Kafka 流 1.0 和 kafka 代理 1.0.1
问题是,CustomProcessor 每隔几秒关闭一次,这导致重新平衡信号,我正在使用以下配置:
session.timeout.ms=15000
heartbeat.interval.ms=3000
// 设置为 1/3 session.timeout
max.poll.interval.ms=Integer.MAX_VALUE
// 让它变大,因为我正在执行密集的计算操作,处理 1 条 kafka 消息(NLP 操作)可能需要 10 分钟
max.poll.records=1
尽管有这种配置并且我了解 kafka 超时配置的工作原理,但我看到消费者每隔几秒就会重新平衡一次。
我已经阅读了下面的文章和其他 Whosebug 问题。关于如何调整长时间的操作并避免非常长的会话超时,这会使故障检测这么晚,但是我仍然看到意外的行为,除非我误解了什么。
对于消费者环境设置,我有 8 台机器,每台机器有 16 个代码,并且从 1 个主题和 100 个分区中消费,我遵循这个 confluent doc here 推荐的做法。
有什么指点吗?
我明白了。经过大量调试并为 kafka 流客户端和代理启用详细日志记录后,结果有两件事:
- streams 1.0.0 (HERE) 中存在严重错误,因此我将客户端版本从 1.0.0 升级到 1.0.1
- 我将消费者 属性
default.deserialization.exception.handler
的值从org.apache.kafka.streams.errors.LogAndFailExceptionHandler
更新为org.apache.kafka.streams.errors.LogAndContinueExceptionHandler
。
经过以上2次修改后,一切顺利,没有重启,我用grafana监控重启,过去48小时,没有一次重启。
我可能会做更多的故障排除,以确保以上 2 项中的哪一项能够真正解决问题,但我急于部署到生产环境,所以如果有人有兴趣从那里开始,请继续,否则,有时间我会做进一步的分析和更新答案!
很高兴解决了这个问题!!!