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