Apache Kafka使用默認配置執行一些負載測試來完成性能測試和基準測試

Kafka是一種分佈式,分區,複製的提交日誌服務。它提供了消息傳遞系統的功能。html

 

咱們先來看看它的消息傳遞術語:shell

  • Kafka在稱爲主題的類別中維護消息的提要
  • 咱們將調用向Kafka主題生成器發佈消息的進程。
  • 咱們將調用訂閱主題的流程並處理已發佈消息的消費者
  • Kafka做爲由一個或多個服務器組成的集羣運行,每一個服務器稱爲代理

所以,在高層次上,生產者經過網絡向Kafka集羣發送消息,而Kafka集羣又向消費者提供這樣的服務:apache

 

有關Apache Kafka的更多信息,請參閱如下連接:
Kafka文檔服務器

所以,爲了對Kafka進行性能測試或基準測試,咱們須要考慮兩個方面:網絡

  1. Producer End的表現
  2. 消費者端的表現

咱們須要爲ProducerConsumer執行此測試,以便咱們能夠確保Producer能夠生成多少消息,而Consumer能夠在給定時間內消耗這些消息。對於大量消息,咱們也能夠確保數據丟失。異步

此測試的主要目的是找出如下統計信息:
1。數據大小的
吞吐量(消息/秒)2。消息數量的吞吐量(消息/秒)
3。總數據
4.消息總數分佈式

讓咱們繼續下載並設置Kafka,請點擊這裏工具

完成後,您能夠繼續執行性能統計,按照下面提到的步驟執行此操做:post

1.啓動一個新的終端窗口
2.將目錄設置爲Kafka / bin 
3.在這裏您能夠找到多個shell腳本,咱們將使用如下內容來獲取性能統計信息:性能

- kafka-producer-perf-test.sh
- kafka-consumer-perf-test.sh

若是要查看有關shell腳本(perf工具)的幫助,只需鍵入便可

sh ./kafka-producer-perf-test.sh --help
or
sh ./kafka-consumer-perf-test.sh --help

分別爲製片人和消費者。

Producer End的表現

在控制檯上鍵入如下命令,而後按Enter鍵:

sh ./kafka-producer-perf-test.sh --broker-list localhost:9092 --topic test --messages 100

讓咱們一個一個地理解這些命令行選項..

  • 第一個參數是「broker-list」,在這裏咱們須要提到代理信息,它是代理的主機和引導程序的端口列表,這是必需的參數。
  • 第二個參數是「topic」,這個參數還須要參數並顯示咱們以前討論過的消息類別。
  • 第三個顯示您要生成和發送的消息數量,咱們將第一個場景設置爲100。

一旦測試完成,一些統計數據將打印在控制檯上,如:

start.time:2016-02-03 21:38:28:094 
end.time:2016-02-03 21:38:28:449
compression:0
message.size:100
batch.size:200
total.data.sent .in.MB:0.01
MB.sec:0.0269
total.data.sent.in.nMsg:100
nMsg.sec:281.6901
  1. start.time,end.time將顯示測試什麼時候開始並完成。
  2. 若是Compression爲'0',則表示消息壓縮已關閉(默認)。
  3. 信息。size顯示每條消息的大小。
  4. batch.size表示一批中將發送的消息數,默認狀況下設置爲200。
  5. total.data.sent.in.MB顯示以MB爲單位發送到集羣的總數據。
  6. MB.sec表示每秒以MB爲單位傳輸的數據量(吞吐量大小)。
  7. total.data.sent.in.nMsg將顯示在此測試期間發送的總消息數。
  8. 最後nMsg.sec顯示一秒內發送的消息數(消息計數的吞吐量)。

在進行此性能測試時,您可使用更多參數,例如;

  • csv-reporter-enabled:若是設置,將啓用CSV指標報告器
  • initial-message-id:用於生成測試數據,若是設置,消息將使用ID標記,並由生產者今後ID開始按順序發送。消息內容將是字符串類型,並以「消息:000 ... 1:abc ...」的形式,使用此參數,您將可以看到消費者正在消費的消息。
  • message-size:它表示每條消息的大小,當你想用一些大的消息加載測試Kafka時,它會頗有用。
  • vary-message-size:若是設置,則消息大小將根據給定的最大值而變化。

還有一些其餘選項能夠在Producer性能測試期間根據須要使用。

對於這個博客,我根據消息的數量獲取了一些性能數據,並經過圖形內聯顯示了性能。

消費者端的表現

如今讓咱們看一下如何在消費者端獲取性能統計數據,輸入如下命令並按Enter鍵。

sh ./kafka-consumer-perf-test.sh --topic test --zookeeper localhost:2181

讓咱們理解它的命令行選項,

  • 第一個參數是「topic」,這個參數還須要參數並顯示消息類別。
  • 第二個參數是「zookeeper」,這個參數還須要參數,並以host:port的形式顯示zookeeper鏈接的鏈接字符串。

一旦測試完成,一些統計數據將打印在控制檯上,如:

start.time:2016-02-04 11:29:41:806 
end.time:2016-02-04 11:29:46:854
fetch.size:1048576
data.consumed.in.MB:0.0954
MB.sec: 1.9869
data.consumed.in.nMs:1001
nMsg.sec:20854.1667
  1. start.time,end.time將顯示測試什麼時候開始並完成。
  2. fetch.size **顯示單個請求中要獲取的數據量。
  3. data.consumed.in.MB ****顯示全部消息的大小。
  4. ** MB.sec *表示每秒以MB爲單位傳輸的數據量(吞吐量大小)。
  5. data.consumed.in.nMsg將顯示在此測試期間消耗的總消息數。
  6. 最後nMsg.sec顯示一秒內消耗的消息數量(消息計數的吞吐量)。

Consumer的性能測試也基於消息數量,結果以圖形內聯顯示。

經過使用統計數據,咱們能夠決定批量大小,消息大小和給定配置能夠生成/消耗的最大消息數,換句話說,咱們能夠爲Kafka基準數量。

全部上述分析都是使用Kafka的默認設置完成的,能夠有多種狀況咱們能夠測試並獲取Kafka Producer和Consumer的性能統計數據,其中一些狀況能夠是:

  1. 更改主題數量
  2. 更改異步批量大小
  3. 更改郵件大小
  4. 更改分區數
  5. 網絡延遲
  6. 更改經紀人數量
  7. 更改生產者/消費者等的數量

上述更改能夠在文件夾中可用的屬性文件中完成:

sh /Kafka/kafka_2.9.1-0.8.2.2/config
相關文章
相關標籤/搜索