2017-08-02 46 views
0

我在AWS上配置了複製因子爲2的雙節點六分區Kafka集羣。每個Kafka節點在由EBS支持的m4.2xlarge EC2實例上運行。卡夫卡Producer和Broker吞吐量限制

據我所知,卡夫卡生產者向卡夫卡經紀人傳輸的數據流量受制造商網絡帶寬的限制。

表示Kafka生產者和代理之間的網絡帶寬爲1Gbps(約125 MB/s),Kafka代理和存儲之間(EC2實例和EBS卷之間)的帶寬爲1 Gbps。

我使用org.apache.kafka.tools.ProducerPerformance工具來分析性能。

我觀察到一個單一的生產者可以在大約90百萬字節/秒寫入到代理時的消息大小爲100個字節。(因此網絡不飽和的)

我還觀察到磁盤的寫入速率EBS卷大約是120 MB/s。

這是90MB/s由於一些網絡瓶頸還是卡夫卡的限制? (爲簡單起見,忘記批量大小和壓縮等)

難道這是由於broker和ebs卷之間的帶寬限制?我還觀察到,當兩​​個生產者(來自兩個獨立的機器)產生數據時,一個生產者的吞吐量下降到60MB/s左右。

這可能是什麼原因?爲什麼這個值不能達到90 MB/s?這可能是由於broker和ebs卷之間的網絡瓶頸嗎?

什麼讓我困惑的是,在這兩種情況下(單個生產者和兩位製片人)的磁盤寫入速率EBS停留大約120 MB /秒(接近其上限)。

謝謝

回答

0

我遇到同樣的問題,因爲按我的理解,在第一種情況下一個生產者發送數據給兩家券商(有沒有別的網絡中),所以你得到了90 MB/s和每個(約),但在第二種情況下,兩家制造商向兩家經紀商發送數據,所以從製造商的角度來看,它能夠以60MB/s的速度發送數據,但從經紀商的角度來看,它以60MB/s的速度接收數據,秒。所以你實際上可以通過kafka推送更多的數據。

0

有幾件事情要考慮:

  1. 有適用於實例和體積都單獨的磁盤和網絡的限制。
  2. 您必須考慮複製。如果RF = 2,假設跨分區的寫入均勻分佈,單個節點佔用的寫入流量爲2 *(PRODUCER_TRAFFIC)/(PARTITION_COUNT)。