0

我在AWS上配置了兩個節點的Kafka集羣,目前正在測試其性能屬性。卡夫卡消費者從磁盤讀取緩存數據庫

我使用kafka-consumer-perf-test.sh從單個線程讀取來自Kafka主題的5000萬條消息。

我在測試消費者吞吐量時觀察到以下情況。

觀察1

上m4.large EC2實例

單個消費者 - 讀吞吐量40.2MB /秒

3名消費者在三個獨立的m4.large EC2實例 - 個人讀取吞吐量 - 40.25MB /秒。

無磁盤讀取或寫入報告了卡夫卡代理端

(由2 EBS卷支持兩個單獨m4.2xlarge EC2實例中運行)我一段時間後再次運行該工具。

觀察2名

3名消費者在三個獨立的m4.large EC2實例 - 個人讀取吞吐量下降至 - 34.25MB /秒。

在這種情況下,我觀​​察到Kafka broker節點中磁盤讀取率相當高。

如果你能幫助我澄清以下內容,我將不勝感激。

  1. 在觀察1次,因爲我沒有觀察到任何磁盤讀取,可能所有的數據已經從存儲器中取出(它被緩存)?

  2. 在觀察2中,我假設由於磁盤讀取性能下降。雖然它從磁盤讀取,但仍然有足夠的可用內存可用,如nmon報告所示。

消費者從磁盤而不是內存讀取的原因是什麼?生產者生成的數據保留在緩存中多長時間?

  1. 我假設最大40MB/s的讀取吞吐量是由於m4.large EC2實例的網絡帶寬限制所致。這個假設是否正確?

謝謝。

回答

0

建議調整Linux內核參數vm.swappiness = 1以確保最佳使用頁面緩存進行讀取並避免磁盤I/O。

https://en.m.wikipedia.org/wiki/Swappiness

還建議運行卡夫卡獨自站立它自己的VM或物理服務器上,使得所有可用的RAM會習慣的頁面緩存。

匯合剛公佈的基於AWS的基準測試結果AK 0.11(Confluent 3。3),其中包括有和沒有頁面緩存測試命中,如果你想有一個比較

的基準是在這個博客帖子的鏈接

https://www.confluent.io/blog/we-will-say-exactly-confluent-platform-3-3-available-now/

的基準測試結果在這裏

https://docs.google.com/spreadsheets/u/1/d/1dHY6M7qCiX-NFvsgvaE0YoVdNq26uA8608XIh_DUpI4/htmlview