kafka節點信息:
num.network.threads=3
log.dirs=/data2/zdh/kafka/data,/data3/zdh/kafka/data,/data4/zdh/kafka/data,/data5/zdh/kafka/data,/data6/zdh/kafka/data,/data7/zdh/kafka/data,/data8/zdh/kafka/data,/data9/zdh/kafka/data,/data10/zdh/kafka/data
num.partitions=36
log.retention.hours=36
zookeeper.connect=wxbdzte71:2181,zdh233:2181,zdh237:2181,zdh234:2181,wxbdzte72:2181
default.replication.factor=2
auto.leader.rebalance.enable=true
①133.37.23.81
內存:252g
cpu核數:32
磁盤讀寫:
dd oflag=direct if=/dev/zero of=/home/testDisk/1.dat bs=1M count=20000
20000+0 records in
20000+0 records out
20971520000 bytes (21 GB) copied, 364.474 s, 57.5 MB/s
dd iflag=direct of=/dev/null if=/home/testDisk/1.dat bs=1M count=20000
20000+0 records in
20000+0 records out
20971520000 bytes (21 GB) copied, 199.663 s, 105 MB/s
①133.37.23.98
內存:252g
cpu核數:32
磁盤讀寫:
dd oflag=direct if=/dev/zero of=/home/testDisk/1.dat bs=1M count=20000
記錄了20000+0 的讀入
記錄了20000+0 的寫出
20971520000字節(21 GB)已復制,402.504 秒,52.1 MB/秒
dd iflag=direct of=/dev/null if=/home/testDisk/1.dat bs=1M count=20000
記錄了20000+0 的讀入
記錄了20000+0 的寫出
20971520000字節(21 GB)已復制,222.188 秒,94.4 MB/秒
一、kafka producer吞吐率測試
1.測試方法
利用kafka自帶的工具kafka-producer-pert-test.sh進行測試
./kafka-producer-perf-test.sh --batch-size 180000 --broker-list wxbdzte81:9092,wxbdzte98:9092 --message-size 600 --messages 1000000 --request-num-acks 1 --sync async --threads 3 --topics zou_csllte
total.data.sent.in.nMsg:1000000,發送條數都是1000000
threads:10,測試用10個線程測試
2.測試結果
I.batch.size(kafka-producer-pert-test.sh中batch.size表示每批次的消息條數)
batch.size:(30 90 150 210 270 330 390)
request-num-acks:0
sync:async(異步)
message.size:600
total.data.sent.in.MB:572.20MB
compression:0,1,2,3(分別表示不壓縮,GZIP, Snappy, LZ4)
一、kafka producer吞吐率測試
1.測試方法
利用kafka自帶的工具kafka-producer-pert-test.sh進行測試
./kafka-producer-perf-test.sh --batch-size 180000 --broker-list wxbdzte81:9092,wxbdzte98:9092 --message-size 600 --messages 1000000 --request-num-acks 1 --sync async --threads 3 --topics zou_csllte
total.data.sent.in.nMsg:1000000,發送條數都是1000000
threads:10,測試用10個線程測試
2.測試結果
I.batch.size(kafka-producer-pert-test.sh中batch.size表示每批次的消息條數)
batch.size:(30 90 150 210 270 330 390)
request-num-acks:0
sync:async(異步)
message.size:600
total.data.sent.in.MB:572.20MB
compression:0,1,2,3(分別表示不壓縮,GZIP, Snappy, LZ4)
一般我們說增大批次,都有利於增加吞吐量(減少了網絡IO次數)。但過增大批次帶來的好處無法抵消壓縮時間的增長,吞吐率就會降低。
II.request-num-acks
batch.size:300
request-num-acks:(-1,0,1)
sync:async(異步)
message.size:600
total.data.sent.in.MB:572.20MB
compression:不壓縮(0)
0,提供了最低的延遲,但是持久化的保證是最弱的,當server掛掉的時候會丟失一些數據。
1,提供了更好的持久性。
-1,提供了最好的持久性,只要還有一個replica存活,那么數據就不會丟失。
III.messagesize(消息大小)
batch.size:300
request-num-acks:0
sync:async(異步)
message.size:(100 300 500 600 800 1000 1200 1400)
total.data.sent.in.MB:572.20MB
compression:0(不壓縮)
III.async(同步、異步)
batch.size:300
request-num-acks:0
sync:sync,async(同步,異步)
message.size:600
total.data.sent.in.MB:572.20MB
compression:0(不壓縮)
sync值決定消息是否應在一個后台線程異步發送,設置為async則允許批量發送請求,這回帶來更高的吞吐量(實際吞吐率也與當前環境有關),但是client的機器掛了的話會丟失還沒有發送的數據。