それがリバランスしているため、グループのハートビート障害が発生する正確な理由は何ですか?グループ内のすべての消費者が稼働しているリバランスの理由は何ですか?
ありがとうございました。
ハートビートは、すべてのコンシューマがまだ稼働しているかどうかを確認するための基本的なメカニズムです。グループがリバランスしているためにハートビート障害が発生した場合、コンシューマーインスタンスが次のハートビートを送信するのに時間がかかりすぎて停止していると見なされ、リバランスがトリガーされたことを示しています。
これを防ぐには、タイムアウトを増やすか(_session.timeout.ms
_)、またはコンシューマーがハートビートをより頻繁に送信するようにします(_heartbeat.interval.ms
_)。ハートビートは基本的にpoll()
に埋め込まれているため、ポーリングを十分に頻繁に呼び出す必要があります。これは通常、単一のポーリングが_max.poll.records
_を介して返すレコード数を制限することで実現できます(フェッチされたすべてのデータの処理にかかる時間を短縮するため)。
更新
Kafka 0.10.1以降、ハートビートはpoll()
が呼び出されたときではなくバックグラウンドスレッドで送信されます(cf. https://cwiki.Apache.org/confluence/display/KAFKA/KIP-62%3A + Allow + consumer + to + send + heartbeats + from + a + background + thread )。この新しい設計では、構成_session.timeout.ms
_と_heartbeat.interval.ms
_は同じです。さらに、poll()
を呼び出す頻度を決定する_max.poll.interval.ms
_があります。
詳細については、cf。 Kafka 0.10.0.0以降のバージョンでのsession.timeout.msとmax.poll.interval.msの違い