小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Kafka性能測(cè)試

 碼農(nóng)書館 2019-02-11
kafka.png

測(cè)試背景


Apache Kafka是一種高吞吐、可擴(kuò)展的分布式消息隊(duì)列服務(wù),它最初由LinkedIn公司開發(fā),最后發(fā)展為Apache基金會(huì)的一個(gè)項(xiàng)目。目前kafka已經(jīng)廣泛應(yīng)用于大數(shù)據(jù)分析,消息處理等環(huán)境,官方文檔介紹kafka為提高吞吐率做了很多設(shè)計(jì),但是其性能究竟如何呢?本文對(duì)kafka在不同參數(shù)下的性能進(jìn)行測(cè)試。

測(cè)試目標(biāo)


測(cè)試kafka 0.8n的性能(Producer/Consumer性能)。當(dāng)消息大小、批處理大小、壓縮等參數(shù)變化時(shí)對(duì)吞吐率的影響。


測(cè)試環(huán)境


軟件版本:kafka 0.8.1.1
硬件環(huán)境:3臺(tái)多磁盤服務(wù)組成的kafka集群。各服務(wù)器CPU E5645,內(nèi)存47G,12快SAS盤,配置千兆網(wǎng)卡,配置如下:
configure.png

測(cè)試方法


使用kafka官方提供的kafa-perf工具做性能測(cè)試,在測(cè)試時(shí)使用ganglia,kafka Web Console來(lái)記錄服務(wù)情況。

測(cè)試步驟


一、測(cè)試環(huán)境準(zhǔn)備
1、測(cè)試工具kafka-perf編譯
kafka官方提供的二進(jìn)制版本,并不包括性能測(cè)試的jar包,會(huì)報(bào)錯(cuò)找不到ProducerPerformance,要自己重新編譯,編譯方法如下:
git clone https://git-wip-us./repos/asf/kafka.git kafka.git
cd kafka.git/
git checkout -b 0.8.1 origin/0.8.1
vim build.gradle #編輯配置
./gradlew -PscalaVersion=2.10.4 perf:jar #生成2.10.4的kafka-perf的jar包,復(fù)制到libs目錄下
cp perf/build/libs/kafka-perf_2.10-0.8.1.1-SNAPSHOT.jar /usr/local/kafka/libs/

2、啟動(dòng)kafka
cd /usr/local/kafka
vim config/server.properties #內(nèi)容見下圖
./bin/kafka-server-start.sh config/server.properties &
KafkaConfig.png

kafka-producer-perf-test.sh中參數(shù)說(shuō)明:
messages 生產(chǎn)者發(fā)送走的消息數(shù)量
message-size 每條消息的大小
batch-size 每次批量發(fā)送消息的數(shù)量
topics 生產(chǎn)者發(fā)送的topic
threads 生產(chǎn)者
broker-list 安裝kafka服務(wù)的機(jī)器ip:porta列表
producer-num-retries 一個(gè)消息失敗發(fā)送重試次數(shù)
request-timeouts-ms 一個(gè)消息請(qǐng)求發(fā)送超時(shí)時(shí)間
bin/kafka-consumer-perf-test.sh中參數(shù)說(shuō)明:
zookeeper  zk配置
messages 消費(fèi)者消費(fèi)消息的總數(shù)量
topic 消費(fèi)者需要消費(fèi)的topic
threads 消費(fèi)者使用幾個(gè)線程同時(shí)消費(fèi)
group 消費(fèi)者組名稱
socket-buffer-sizes socket緩存大小
fetch-size 每次想kafka broker請(qǐng)求消費(fèi)消息大小
consumer.timeout.ms 消費(fèi)者去kafka broker拿一條消息的超時(shí)時(shí)間

二、測(cè)試生產(chǎn)者吞吐率
此項(xiàng)只測(cè)試producer在不同的batch-zie,patition等參數(shù)下的吞吐率,也就是數(shù)據(jù)只被及計(jì)劃,沒有consumer讀取數(shù)據(jù)消費(fèi)情況。
生成Topic:
生成不同復(fù)制因子,partition的topic
bin/kafka-topics.sh --zookeepr 10.x.x.x:2181/kafka/k1001 --create --topic test-pati1-rep1 --partitions 1 --replication-factor 1
bin/kafka-topics.sh --zookeepr 10.x.x.x:2181/kafka/k1001 --create --topic test-pati1-rep2 --partitions 1 --replication-factor 2

bin/kafka-topics.sh --zookeepr 10.x.x.x:2181/kafka/k1001 --create --topic test-pati10-rep1 --partitions 10 --replication-factor 1
bin/kafka-topics.sh --zookeepr 10.x.x.x:2181/kafka/k1001 --create --topic test-pati10-rep2 --partitions 10 --replication-factor 2

bin/kafka-topics.sh --zookeepr 10.x.x.x:2181/kafka/k1001 --create --topic test-pati100-rep1 --partitions 100 --replication-factor 1
bin/kafka-topics.sh --zookeepr 10.x.x.x:2181/kafka/k1001 --create --topic test-pati100-rep2 --partitions 100 --replication-factor 2
測(cè)試producer吞吐率
調(diào)整batch-size,thread,topic,壓縮等參數(shù)測(cè)試producer吞吐率。
示例:
a)批處理為1,線程數(shù)為1,partition為1,復(fù)制因子為1
bin/kafka-producer-perf-test.sh --messages 2000000 --message-size 512 --batch-size 1 --topic test-pati1-rep1
--partitions 1 --threads 1 --broker-list host1:9092,host2:9092,host3:9092

b)批處理為10,線程數(shù)為1,partition為1,復(fù)制因子為2
bin/kafka-producer-perf-test.sh --messages 2000000 --message-size 512 --batch-size 10 --topic test-pati1-rep2
--partitions 1 --threads 1 --broker-list host1:9092,host2:9092,host3:9092

c)批處理為100,線程數(shù)為10,partition為10,復(fù)制因子為2,不壓縮,sync
bin/kafka-producer-perf-test.sh --messages 2000000 --message-size 512 --batch-size 100 --topic test-pati10-rep2 --partitions 10 --threads 10 --compression-codec 0 --sync 1 --broker-list host1:9092,host2:9092,host3:9092

d)批處理為100,線程數(shù)為10,partition為10,復(fù)制因子為2,gzip壓縮,sync
bin/kafka-producer-perf-test.sh --messages 2000000 --message-size 512 --batch-size 100 --topic test-pati10-rep2 --partitions 10 --threads 10 --compression-codec 1 --sync 1 --broker-list host1:9092,host2:9092,host3:9092
說(shuō)明:消息大小統(tǒng)一使用和業(yè)務(wù)場(chǎng)景中日志大小相近的512Bype,消息數(shù)為50w或200w條。
 
三、測(cè)試消費(fèi)者吞吐率
測(cè)試consumer吞吐率
調(diào)整批處理數(shù),線程數(shù),partition數(shù),復(fù)制因子,壓縮等進(jìn)行測(cè)試。
示例:
a)批處理為10,線程數(shù)為10,partition為1,復(fù)制因子為1
./bin/kafka-consumer-perf-test.sh --messages 500000 --batch-size 10 --topic test-pai1-rep2 --partitions 1 --threads 10 --zookeeper zkhost:2181/kafka/k1001

b)批處理為10,線程數(shù)為10,partition為10,復(fù)制因子為2
./bin/kafka-consumer-perf-test.sh --messages 500000 --batch-size 10 --topic test-pai1-rep2 --partitions 10 --threads 10 --zookeeper zkhost:2181/kafka/k1001

c)批處理為100,線程數(shù)為10,partition為1,復(fù)制因子為1,不壓縮
./bin/kafka-consumer-perf-test.sh --messages 500000 --batch-size 100 --topic test-pai100-rep1 --partitions 1 --threads 10 --compression-codec 0 --zookeeper zkhost:2181/kafka/k1001

d)批處理為100,線程數(shù)為10,partition為1,復(fù)制因子為1,Snappy壓縮
./bin/kafka-consumer-perf-test.sh --messages 500000 --batch-size 100 --topic test-pai100-rep1 --partitions 1 --threads 10 --compression-codec 2 --zookeeper zkhost:2181/kafka/k1001

測(cè)試結(jié)果及分析


1、生產(chǎn)者測(cè)試結(jié)果及分析
調(diào)整線程數(shù),批處理數(shù),復(fù)制因子等參考,對(duì)producer吞吐率進(jìn)行測(cè)試。在測(cè)試時(shí)消息大小為512Byte,消息數(shù)為200w,結(jié)果如下:
pic1.png

pic2.png

pic3.png

調(diào)整sync模式,壓縮方式得到吞吐率數(shù)據(jù)如表3.在本次測(cè)試中msg=512Byte,message=2000000,Partition=10,batch_zie=100
pic4.png

pic5.png

 
結(jié)果分析:
1)kafka在批處理,多線程,不適用同步復(fù)制的情況下,吞吐率是比較高的,可以達(dá)80MB/s,消息數(shù)達(dá)17w條/s以上。
2)使用批處理或多線程對(duì)提升生產(chǎn)者吞吐率效果明顯。
p1.png

3)復(fù)制因子會(huì)對(duì)吞吐率產(chǎn)生較明顯影響
   使用同步復(fù)制時(shí),復(fù)制因子會(huì)對(duì)吞吐率產(chǎn)生較明顯的影響。復(fù)制因子為2比因子為1(即無(wú)復(fù)制)時(shí),吞吐率下降40%左右。
p2.png

4)使用sync方式,性能有明顯下降。
   使用Sync方式producer吞吐率會(huì)有明顯下降,表3中async方式最大吞吐率由82.0MB/s,而使用sync方式時(shí)吞吐率只有13.33MB/s.
 
p3.png

5)壓縮與吞吐率
  見圖3,粉筆使用Gzip及Snappy方式壓縮,吞吐率反而有下降,原因待分析。而Snappy方式吞吐率高于gzip方式。

6)分區(qū)數(shù)與吞吐率
   分區(qū)數(shù)增加生產(chǎn)者吞吐率反而有所下降 
 
2、消費(fèi)者結(jié)果及分析
調(diào)整批處理數(shù),分區(qū)數(shù),復(fù)制因子等參數(shù),對(duì)consumer吞吐率進(jìn)行測(cè)試。在測(cè)試時(shí)消息大小為512Byte,消息數(shù)為200結(jié)果如下:  
 
c1.png

c2.png

調(diào)整壓縮方式,分區(qū)數(shù),批處理數(shù)等,測(cè)試參數(shù)變化時(shí)consumer的吞吐率。測(cè)試的復(fù)制因子為1。
c3.png

c4.png

結(jié)果分析:1)kafka consumer吞吐率在parition,threads較大的情況下,在測(cè)試場(chǎng)景下,最大吞吐率達(dá)到了123MB/s,消息數(shù)為25w條/s

2)復(fù)制因子,影響較小。replication factor并不會(huì)影響consumer的吞吐率測(cè)試,運(yùn)維consumer智慧從每個(gè)partition的leader讀數(shù)據(jù),而與replication factor無(wú)關(guān)。同樣,consumer吞吐率也與同步復(fù)制還是異步復(fù)制無(wú)關(guān)。
r1.png

3)線程數(shù)和partition與吞吐率關(guān)系
r2.png

圖5為msg_size=512,batch_zie=100時(shí)的測(cè)試數(shù)據(jù)備份??梢钥吹疆?dāng)分區(qū)數(shù)較大時(shí),如partion為100時(shí),增加thread數(shù)可顯著提升consumer的吞吐率。Thread10較thread1提升了10倍左右,而thread為100時(shí)叫thread為1提升了近20倍,達(dá)到120MB/s.

但要注意在分區(qū)較大時(shí)線程數(shù)不改大于分區(qū)數(shù),否則會(huì)出現(xiàn)No broker partitions consumed by consumer,對(duì)提升吞吐率也沒有幫助。圖5中partion為10時(shí),thread_10,thread_100吞吐率相近都為35MB/s左右。
4)批處理數(shù)對(duì)吞吐率影響
圖表5中可以看出改變批處理數(shù)對(duì)吞吐率影響不大

5)壓縮與吞吐率
r3.png

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多