web-dev-qa-db-ja.com

グループのハートビートはリバランスのため失敗しました

それがリバランスしているため、グループのハートビート障害が発生する正確な理由は何ですか?グループ内のすべての消費者が稼働しているリバランスの理由は何ですか?

ありがとうございました。

12
user677715

ハートビートは、すべてのコンシューマがまだ稼働しているかどうかを確認するための基本的なメカニズムです。グループがリバランスしているためにハートビート障害が発生した場合、コンシューマーインスタンスが次のハートビートを送信するのに時間がかかりすぎて停止していると見なされ、リバランスがトリガーされたことを示しています。

これを防ぐには、タイムアウトを増やすか(_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の違い

11
Matthias J. Sax