ade*_*dev 7 java multithreading apache-kafka kafka-consumer-api
我们在Java Kafka消费者中看到了意外的重新平衡,如下所述.这些问题对任何人来说都很熟悉吗?有关API或调试技术的任何提示,以找出重新平衡原因?
两个过程正在阅读一个主题.有时,主题上的所有分区都会重新平衡到单个读取器进程.重新启动两个进程后,分区均衡.
两个过程正在阅读一个主题.有时,一系列重新平衡会使读者之间的分区反弹.我们呼吁消费者暂停/恢复背压,这应该可以防止这种情况发生.
两个过程正在阅读一个主题.有时,当两个进程看起来都正常时,会发生重新平衡.之后,阅读工作正常,但这是处理中的一个小问题.
我们希望分区不会在没有看到某些原因或失败的情况下重新平衡.
有时poll()卡(超过超时),我们使用wakeup()和close(),然后创建新的消费者.有时协调器心跳线程在消费者关闭后继续运行(我们已经看到了数千个).时机似乎与重新平衡无关,因此重新平衡似乎是一个单独的问题,但也许心跳正在打击一个未记录的网络问题.
我们使用a ConsumerRebalanceListener来记录和处理某些重新平衡,但Kafka API似乎没有公开有关重新平衡原因的数据.
重新平衡是间歇性的,难以重现.它们以每秒10,000到80,000的消息速率发生.我们在日志中看不到明显的错误.
我们的读取循环很简单 - 基本上"在运行时,使用超时轮询和错误处理,然后将收到的消息排入队列".
人们提出了很好的相关问题,但答案对我们没有帮助:
组态:
KafkaConsumer.poll()1000毫秒.影响重新平衡的配置是:
max.poll.interval.ms=50000max.poll.records=100request.timeout.ms=40000session.timeout.ms=20000
我们使用默认值:
heartbeat.interval.ms=3000group.max.session.timeout.ms=300000group.min.session.timeout.ms=6000| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |