2.4.5. 大量のメッセージの処理
MirrorMaker 2.0 デプロイメントが大量のメッセージを処理する場合は、それをサポートするように設定を調整する必要がある場合があります。
データレプリケーションのフラッシュパイプラインは、source topic offset.flush.timeout.ms) は、プロデューサーバーッファー (producer.buffer.memory) が、コミットされるデータのフラッシュおよびオフセットを待つ時間です。プロデューサーバーッファーが大きく、オフセットフラッシュタイムアウト期間が不十分なために、フラッシュに失敗したり、オフセットのコミットに失敗したりするタイプのエラーが発生する状況は回避してください。
このタイプのエラーは、プロデューサーバッファー内にあるメッセージが多すぎるため、オフセットフラッシュタイムアウトに達する前にすべてのメッセージをフラッシュできないことを意味します。
このタイプのエラーが発生した場合は、次の設定変更を試してください。
-
producer.buffer.memoryのデフォルト値 (バイト) を減らす -
offset.flush.timeout.msのデフォルト値 (ミリ秒) を増やす
この変更は、未処理のメッセージの基になる Kafka Connect キューを管理可能なサイズに保つのに役立つはずです。目的の効果を得るには、値を調整する必要がある場合があります。
これらの設定を変更してもエラーが解消されない場合は、次の手順を実行して、並行して実行されるタスクの数を増やしてみてください。
-
tasksMaxプロパティーを使用して タスク数を増やす -
replicasプロパティーを使用してタスクを実行するワーカーのノード数を増やす
大量のメッセージを処理するための MirrorMaker 2.0 の設定例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
metadata:
name: my-mirror-maker2
spec:
version: 3.1.0
replicas: 5
connectCluster: "my-cluster-target"
clusters:
- alias: "my-cluster-source"
bootstrapServers: my-cluster-source-kafka-bootstrap:9092
- alias: "my-cluster-target"
config:
offset.flush.timeout.ms: 10000
producer.buffer.memory: 8388608
bootstrapServers: my-cluster-target-kafka-bootstrap:9092
mirrors:
- sourceCluster: "my-cluster-source"
targetCluster: "my-cluster-target"
sourceConnector:
tasksMax: 10
2.4.5.1. メッセージフローの確認 リンクのコピーリンクがクリップボードにコピーされました!
Prometheus と Grafana を使用してデプロイメントをモニタリングしている場合は、MirrorMaker 2.0 メッセージフローを確認できます。AMQ Streams で提供される MirrorMaker 2.0 Grafana ダッシュボードの例は、フラッシュパイプラインに関連する次のメトリクスを示しています。
- Kafka Connect の未処理メッセージキューにあるメッセージの数
- プロデューサーバーッファーの使用可能なバイト数
- オフセットコミットタイムアウト (ミリ秒)
これらのメトリクスを使用して、メッセージの量に基づいて設定を調整する必要があるかどうかを判断できます。