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

ApsaraMQ for Kafka:リバランスの詳細を表示する

最終更新日:Jan 11, 2025

コンシューマー クライアントでリバランスが発生した場合、リバランスの開始時刻、期間、原因などのリバランスの詳細を表示できます。また、リバランスが発生した回数や、リバランス後にコンシューマーがコンシューマー グループに追加されたかどうかを確認することもできます。

背景情報

ApsaraMQ for Kafka では、リバランスとは、パーティションがコンシューマー グループに再マップされるプロセスです。コンシューマー クライアントでは、次の原因によりリバランスがトリガーされる可能性があります。

  • コンシューマーがコンシューマー グループへのサブスクリプションを追加または削除する。

  • トピック内のパーティション数が変更される。

  • コンシューマー グループ内のコンシューマーの数が増減する。

    • 消費応答の遅延により、消費ハートビートがタイムアウトします。ハートビートがタイムアウトしたコンシューマーをフィルタリングするために、リバランスがトリガーされます。

    • max.poll.interval.ms パラメーターで指定された時間が経過してもメッセージがプルされない場合。これにより、クライアントはキューから切断され、リバランスがトリガーされます。 max.poll.interval.ms パラメーターのデフォルト値は 5 分です。

    • コンシューマー グループ内のコンシューマーの数が多すぎる。トピックとパーティションのリソースを節約するために、特定のコンシューマーをシャットダウンする必要があります。これにより、リバランスがトリガーされます。

    • コンシューマー グループ内のコンシューマーの数が不足している。これにより、トピックとパーティションでメッセージの遅延が発生します。メッセージの遅延を防ぐために、特定の数のコンシューマーを追加する必要があります。これにより、リバランスがトリガーされます。

手順

  1. ApsaraMQ for Kafka コンソール にログインします。左側のナビゲーション ペインで、インスタンスリスト をクリックします。

  2. 上部のナビゲーション バーで、管理するインスタンスが存在するリージョンを選択します。 インスタンスリスト ページで、管理するインスタンスの名前をクリックします。

  3. 左側のナビゲーション ペインで、Group の管理 をクリックします。表示されるページで、管理するグループを見つけ、グループの名前をクリックします。

  4. [グループの詳細] ページで、リバランス詳細 タブをクリックします。

クライアントで頻繁にリバランスが発生するのはなぜですか?

考えられる原因

この問題は、次の原因により発生する可能性があります。

  • バージョン 0.10.2 より前のクライアントの場合: コンシューマーには、ハートビート メッセージを送信するための個別のスレッドがありません。ハートビート メッセージは、poll インターフェースを使用して送信されます。消費応答が停止すると、ハートビート メッセージを送信するリクエストがタイムアウトし、リバランスが発生します。

  • バージョン 0.10.2 以降のクライアントの場合: max.poll.interval.ms パラメーターで指定された時間が経過してもメッセージがプルされません。これにより、クライアントはメッセージ キューから切断され、リバランスがトリガーされます。 max.poll.interval.ms パラメーターのデフォルト値は 5 分です。

解決策

次のパラメーターを理解する必要があります。

  • session.timeout.ms: ハートビート メッセージを送信するリクエストのタイムアウト期間を指定します。ビジネス要件に基づいてカスタム値を指定できます。

  • max.poll.records: 各 poll に対して返されるメッセージの最大数を指定します。

  • バージョン 0.10.2 より前のクライアントの場合: ハートビート メッセージは、poll インターフェースを使用して送信されます。コンシューマーには、ハートビート メッセージを送信するための個別のスレッドがありません。

  • バージョン 0.10.2 以降のクライアントの場合: max.poll.interval.ms パラメーターを設定して、クライアントが長時間メッセージを消費しないようにすることができます。

  1. 以下の項目は、パラメーター値を設定するための参考資料です。

    • session.timeout.ms: バージョン 0.10.2 より前のクライアントの場合は、メッセージのバッチを消費するために必要な時間よりも長く、30 秒よりも短い値を設定します。 25 秒に設定することをお勧めします。バージョン 0.10.2 以降のクライアントの場合は、デフォルト値の 10 秒を維持します。

    • max.poll.records: 1 秒あたりにスレッドごとに消費されるメッセージ数 × スレッド数 × max.poll.interval.ms パラメーターの値 よりもはるかに小さい値を設定します。

    • max.poll.interval.ms: max.poll.records の値 / (1 秒あたりにスレッドごとに消費されるメッセージ数 × スレッド数) よりも大きい値を設定します。

  2. クライアントの消費速度を向上させ、消費ロジックを処理するための個別のスレッドを割り当てます。

  3. グループがサブスクライブするトピックの数を 5 以下に減らします。 1 つのグループが 1 つのトピックのみをサブスクライブすることをお勧めします。

  4. クライアントをバージョン 0.10.2 以降にアップグレードします。