Kafka でメッセージの蓄積、スキュー、またはトラフィックの制限などの問題が発生した場合、グループとトピック間のサブスクリプション関係の表示、各トピックパーティションの消費進捗の追跡、および蓄積されたメッセージの総数の確認ができます。これにより、サービスを迅速に調整し、リスクを軽減できます。
注意事項
-
メッセージの蓄積を防ぐため、1 つのコンシューマーグループがサブスクライブするトピックは 3 つ以下にすることを推奨します。
-
assign消費モードを使用する場合、コンシューマーオフセットを速やかにコミットしてください。これにより、消費済みのメッセージが未コミットのオフセットのために蓄積されていると報告されるのを防ぎます。 -
大量のメッセージが蓄積されている場合は、メッセージの消費レートと生成レートを比較してください。消費レートが生成レートよりも低い場合は、消費キャパシティを増強する必要があります。
トピックをサブスクライブしているグループの表示
ApsaraMQ for Kafka コンソールにログインします。概要 ページの リソースの分布 セクションでリージョンを選択します。
インスタンスリスト ページで、ターゲットインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、Topics をクリックします。
-
Topics ページで、対象トピックの 名前 をクリックします。
-
トピックの詳細 ページで、サブスクリプション関係 タブをクリックします。
現在のトピックを購読しているオンライングループのリスト リストには、この Topic をサブスクライブするすべてのオンライングループが表示されます。
-
現在のトピックを購読しているオンライングループのリスト リストで、対象の グループ を見つけ、操作 列の 消費の詳細 をクリックします。
このリストには、各トピックパーティションの消費詳細が表示されます。
パラメーター
説明
パーティション ID
トピックパーティションの ID。
クライアント
現在トピックをサブスクライブしているオンラインコンシューマー。
説明-
値は
<クライアント ID>_/<IP>フォーマットです。 -
オフラインコンシューマーのクライアント情報は利用できません。
最大オフセット
パーティションの最大コンシューマーオフセット。
Consumer Offset
パーティションの現在のコンシューマーオフセット。
Messages Accumulated
パーティションに滞留しているメッセージ数です。この値は、最大オフセット - コンシューマオフセット の式で計算されます。
重要滞留メッセージ数は主要なメトリックです。値が大きい場合は、コンシューマーがブロックされているか、消費レートが生産レートを下回っている可能性があります。この場合、ご利用のコンシューマーのステータスを分析し、消費能力を増強してください。詳細については、「コンシューマオフセットのリセット」をご参照ください。
-
グループによってサブスクライブされているトピックの表示
インスタンスリスト ページで、ターゲットインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、Group の管理 をクリックします。
-
Group の管理 ページで、対象の Group ID をクリックします。
-
[Topic] リストで対象の Topic を見つけ、操作 列の 消費の詳細 をクリックします。
[コンシューマー詳細] リストには、Topic のパーティションごとの グループ の消費詳細が表示されます。
パラメーターの説明については、上記の表をご参照ください。
よくある質問
コンシューマーが動作しているにもかかわらずメッセージが蓄積されるのはなぜですか
コンシューマーが assign 消費モードを使用している可能性があります。このモードでは、オフセットを手動で管理します。この場合、メッセージが消費された後でもコンシューマーオフセットがコミットされていないと、メッセージが蓄積されているように見えることがあります。この問題を解決するには、コンシューマーオフセットを適時に手動でコミットしてください。
消費キャパシティを増強する方法
以下のいずれかの方法で消費キャパシティを増強できます。
-
コンシューマーインスタンスの数を増やします。プロセス内でインスタンスを追加し、各インスタンスが独自のスレッドを持つようにするか、複数のコンシューマープロセスをデプロイすることができます。コンシューマーインスタンスの数がパーティションの数を超えると、消費速度は向上せず、一部のインスタンスはアイドル状態になることに注意してください。
-
消費スレッドの数を増やします。詳細については、「消費速度の向上」をご参照ください。
メッセージの蓄積は常に問題を示しますか
必ずしもそうとは限りません。次の状況を考慮してください。
-
最終消費時刻が最近であり、蓄積メッセージ数が継続的に増加することなく安定した範囲で変動している場合。これは正常な状態であり、クライアントが最新のメッセージをアクティブにプルしていることを示します。
-
コンシューマーオフセットが変わらない一方で、蓄積メッセージ数が着実に増加している場合。これは、コンシューマースレッドがブロックされ、メッセージの処理を停止し、オフセットのコミットを停止したことを示します。これは、メッセージが実際に蓄積されている異常な状態です。
詳細については、「ApsaraMQ for Kafka でのメッセージ蓄積のトラブルシューティング」をご参照ください。
関連ドキュメント
-
API を使用してコンシューマーのステータスをクエリする方法については、「GetConsumerProgress」をご参照ください。
-
蓄積されたメッセージをすぐに処理したくない場合は、コンシューマーオフセットをリセットしてスキップすることができます。詳細については、「コンシューマーオフセットのリセット」をご参照ください。