Amazon MSK クラスターで大きなコンシューマーラグが発生している理由は何ですか?

所要時間1分
0

Amazon Managed Streaming for Apache Kafka (Amazon MSK) クラスターのコンシューマーラグのトラブルシューティングを行いたいと考えています。

解決方法

前提条件

Amazon CloudWatch メトリクスを使用してコンシューマーラグを確認するには、次のコマンドを実行します。

./kafka-consumer-groups.sh --bootstrap-server <broker endpoints> --group <groupid> --describe --command-config <properties>

注: <broker endpoints><groupid><properties> をそれぞれお客様のブローカーエンドポイント、グループ ID、プロパティに置き換えます。 

コンシューマーラグに関連する一般的な問題のトラブルシューティング

コンシューマーとパーティションの比率の検証: コンシューマーグループ内の各コンシューマーは、グループに属するコンシューマーに基づいて、パーティションのサブセットから読み取りを行います。各コンシューマーが複数のパーティションからデータを消費すると、大量のデータを処理することになり、ラグが発生する可能性があります。

可能な限り、コンシューマーとパーティションの比率をほぼ 1:1 に維持してください。ラグが解消されない場合は、パーティションとコンシューマーの数を増やしてください。

外れ値の特定: 外れ値があると、コンシューマーラグが発生する可能性があります。あるコンシューマパーティションが、コンシューマグループ内の他のコンシューマーパーティションよりも大幅に影響を及ぼしているかどうかを確認します。問題の原因を特定して、最適な解決方法を適用します。最終的なオプションとしては、アプリケーションを再起動します。

コンシューマーホストのリソース使用量の確認: コンシューマーアプリケーションのリソースを監視して、リソース不足が起きていないかどうかを確認します。コンシューマーが遅いと、メッセージ処理が遅くなり、結果としてコンシューマーラグが発生します。

コンシューマーグループのリバランスの確認: コンシューマグループのリバランスの際に、すべてのコンシューマーパーティションの割り当てが取り消されます。その結果、コンシューマーはトピックからの読み取りを停止し、ラグが増大します。詳細については、「Amazon MSK 消費者グループの継続的なリバランスをトラブルシューティングする方法を教えてください。」を参照してください。

コンシューマー設定の評価: コンシューマーラグは、コンシューマーが読み取ることができる速度よりも、プロデューサーが速く書き込む場合に発生する可能性があります。生成されたデータをすぐに読み取るようにするには、コンシューマー設定で fetch.min.bytesfetch.partition.min.bytes を調整します。プロパティ max.poll.interval.msmax.poll.records は、コンシューマーがオフセットをコミットする頻度と、一度に取り込むメッセージの数に影響を与えることができます。これらの設定を調整することで、コンシューマーラグが軽減されます。

メッセージサイズの管理: メッセージサイズが大きいと、特にコンシューマーアプリケーションでメッセージの処理が遅くなっている場合には、コンシューマーラグが発生する可能性があります。ワークロードを処理できるように、コンシューマーインスタンスの数を増やしてください。

アプリケーション設計の見直し: コンシューマーアプリケーションの設計は、コンシューマーラグに影響を及ぼす可能性があります。アプリケーションが、処理しているメッセージの量に対応できる設計になっているかを確認します。アプリケーションをスケールアップするか、処理ロジックを最適化してください。

ブローカーのリソース使用状況の監視: ブローカーの CPU 使用率を監視して、ブローカーが過負荷になっていて、ラグが増大していないかどうかを確認します。CPU 使用率が高い場合のトラブルシューティングの詳細については、「Amazon MSK クラスターの 1 つ以上のブローカーで CPU 使用率が高い場合のトラブルシューティング方法を教えてください。」を参照してください。

ワークロードに対するクラスターの最適化: MSK クラスター内の Kafka ブローカーが、ワークロードに合わせて設定および最適化されていることを確認します。トピックのパーティションがブローカー全体に均等に分散されていることを確認してください。レプリケーション係数の設定が適切であることを確認します。

ネットワークレイテンシーの確認: コンシューマーと MSK クラスター間のネットワークレイテンシーが大きい場合、コンシューマーラグも大きくなる可能性があります。コンシューマーアプリケーションと MSK クラスター間のネットワーク接続を確認します。接続が遅い場合は、コンシューマーアプリケーションを Kafka ブローカーの近くに移動させます。または、ネットワーク設定を最適化します。

AWS公式
AWS公式更新しました 10ヶ月前