すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for Kafka:ApsaraMQ for Kafka におけるコンシューマーの頻繁なリバランスのトラブルシューティング

最終更新日:Feb 28, 2026

コンシューマークライアントでリバランスが頻繁にトリガーされる場合、主な原因は通常、メッセージ処理の遅延、コンシューマーパラメーターの不適切な設定、または古いクライアントバージョンです。このトピックでは、クライアントのバージョン別に原因を説明し、ソリューションを提供します。

現象

ApsaraMQ for Kafka を使用しているコンシューマークライアントで、リバランスが頻繁に発生します。

原因

原因はクライアントのバージョンによって異なります。

  • バージョン 0.10.2 より前のクライアント:コンシューマーには独立したハートビート用のスレッドがありません。ハートビートは poll() メソッドを通じて送信されます。メッセージ処理に時間がかかりすぎると、ハートビートリクエストがタイムアウトし、リバランスがトリガーされます。

  • バージョン 0.10.2 以降のクライアント:独立したハートビート用のスレッドが存在します。ただし、max.poll.interval.ms で指定された時間が経過してもメッセージがプルされない場合、クライアントはコンシューマーグループから離脱し、リバランスがトリガーされます。max.poll.interval.ms のデフォルト値は 5 分です。

主要なパラメーター

以下のパラメーターは、リバランスの動作をコントロールします。

パラメーター適用バージョン説明
session.timeout.msすべてセッションのタイムアウト。この期間内にハートビートが受信されない場合、ブローカーはコンシューマーをコンシューマーグループから削除します。
max.poll.recordsすべてpoll() メソッドの 1 回の呼び出しで返されるメッセージの最大数。
max.poll.interval.ms0.10.2 以降poll() メソッドの 2 回の連続した呼び出しの最大間隔。この間隔を超えると、コンシューマーはコンシューマーグループから離脱し、リバランスがトリガーされます。

ソリューション

  1. パラメーター値の調整

    クライアントのバージョンに基づいて、以下のパラメーターを設定します。

    session.timeout.ms

    クライアントバージョン推奨値
    0.10.2 より前メッセージのバッチを処理する時間より長く、かつ 30 秒以下に設定します。25 秒を推奨します。
    0.10.2 以降デフォルト値の 10 秒を維持します。

    max.poll.records

    この値は、次の数式の結果よりも十分に小さく設定してください。

    max.poll.records << messages_per_thread_per_second * number_of_threads * max.poll.interval.ms

    max.poll.interval.ms (バージョン 0.10.2 以降のみ)

    この値は、次の数式の結果よりも大きく設定してください。

    max.poll.interval.ms > max.poll.records / (messages_per_thread_per_second * number_of_threads)
  2. 消費速度の向上と処理スレッドの分離

    消費ロジックに独立したスレッドを割り当てることで、メッセージの処理速度を向上させます。これにより、処理の遅延がハートビートをブロックしたり、ポーリング間隔を超えたりすることを防ぎます。

  3. コンシューマーグループあたりのトピック数の削減

    各コンシューマーグループがサブスクライブするトピックの数を減らします。コンシューマーグループごとにサブスクライブするトピックは 5 つ以下にしてください。安定性を最適化するためには、コンシューマーグループごとに 1 つのトピックをサブスクライブすることを推奨します。

  4. バージョン 0.10.2 以降へのアップグレード

    0.10.2 より前のバージョンのクライアントを使用している場合は、バージョン 0.10.2 以降にアップグレードしてください。新しいバージョンでは独立したハートビート用のスレッドが使用されるため、処理遅延によるハートビートのタイムアウトを防ぐことができます。