2016-08-31 8 views
0

ack=allと同時にメッセージを送信しているKafka version : 0.9.0.1アプリケーションがあります。なぜ同期メッセージを送信するときにKafka Producer ack =すべてが遅いのですか

この設定では、約1秒あたりのメッセージを達成します。 75.

私がack=1に変更すると、毎秒453メッセージにスループットが向上します。

ack=allが6倍遅く動作するのはなぜですか?

私の目標カフカのトピックは、3

に設定された単一のパーティションや複製が、私はack=allのパフォーマンスを向上させることができます任意の方法はありますか?

答えて

1

ack = allのパフォーマンスを向上させる方法はありますか?

メッセージの再試行を有効にしてasync sendを使用します。メッセージはバッチで送信され、より良いスループットが得られます。

非同期送信は、データの損失、メッセージの再試行、およびメッセージ送信コールバックを利用して、(replication factor - min.insync.replicas)ブローカがダウンしても送信の成功を保証できます。

+2

メッセージを再試行することはできません。これにより、メッセージが順不同になる可能性があります。私は同期送信を使用する必要があります – Hector

1

ack設定は、パフォーマンスとデータ消失の変化とのトレードオフを考慮して設計されているため、方法はありません。 したがって、両方を選択することはできません。

+0

私はそれを知っていますが、なぜ3台のサーバから1を6倍遅くするのですか? – Hector

+0

メッセージを送信するとき:クライアント - >リーダー - >レプリカ。リーダーはすべてのレプリカをリーダ​​ーに待ってから、リーダーはクライアントにackを送りました:レプリカ - >リーダー - >クライアント。私はレプリカ= 3と思う、それは2-4回から遅くなるはずですが、一般にネットワーク時間は予測不可能です。 – hainguyen

+0

私はack = allがack = 1よりも遅いと期待していますが、実際には6〜8倍遅くなります(実際には8倍遅くなります)。たぶん3〜4倍遅くなると思います。カフカがどのようにack = allを実装しているか、私はどのようにして発見できますか? – Hector

関連する問題