Kafka性能調(diào)優(yōu)

  Kafka的配置詳盡、復(fù)雜,想要進(jìn)行全面的性能調(diào)優(yōu)需要掌握大量信息,這里只記錄一下我在日常工作使用中走過的坑和經(jīng)驗(yàn)來對(duì)kafka集群進(jìn)行優(yōu)化常用的幾點(diǎn)。

成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、重慶小程序開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十年以來,已經(jīng)為上1000家除甲醛各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的上1000家客戶與我們一路同行,見證我們的成長(zhǎng);未來,我們一起分享成功的喜悅。

1.JVM的優(yōu)化

  java相關(guān)系統(tǒng)自然離不開JVM的優(yōu)化。首先想到的肯定是Heap Size的調(diào)整。

vim bin/kafka-server-start.sh     
調(diào)整KAFKA_HEAP_OPTS="-Xmx16G -Xms16G”的值

推薦配置:一般HEAP SIZE的大小不超過主機(jī)內(nèi)存的50%。

2.網(wǎng)絡(luò)和ios操作線程配置優(yōu)化:

# broker處理消息的最大線程數(shù)
num.network.threads=9
# broker處理磁盤IO的線程數(shù)
num.io.threads=16

推薦配置:

num.network.threads主要處理網(wǎng)絡(luò)io,讀寫緩沖區(qū)數(shù)據(jù),基本沒有io等待,配置線程數(shù)量為cpu核數(shù)加1。

num.io.threads主要進(jìn)行磁盤io操作,高峰期可能有些io等待,因此配置需要大些。配置線程數(shù)量為cpu核數(shù)2倍,最大不超過3倍。

3.socket server可接受數(shù)據(jù)大小(防止OOM異常):

socket.request.max.bytes=2147483600

推薦配置:

根據(jù)自己業(yè)務(wù)數(shù)據(jù)包的大小適當(dāng)調(diào)大。這里取值是int類型的,而受限于java int類型的取值范圍又不能太大:

java int的取值范圍為(-2147483648~2147483647),占用4個(gè)字節(jié)(-2的31次方到2的31次方-1,不能超出,超出之后報(bào)錯(cuò):org.apache.kafka.common.config.ConfigException: Invalid value 8589934592 for configuration socket.request.max.bytes: Not a number of type INT。

4.log數(shù)據(jù)文件刷盤策略

# 每當(dāng)producer寫入10000條消息時(shí),刷數(shù)據(jù)到磁盤
log.flush.interval.messages=10000
# 每間隔1秒鐘時(shí)間,刷數(shù)據(jù)到磁盤
log.flush.interval.ms=1000

推薦配置:

為了大幅度提高producer寫入吞吐量,需要定期批量寫文件。一般無需改動(dòng),如果topic的數(shù)據(jù)量較小可以考慮減少log.flush.interval.ms和log.flush.interval.messages來強(qiáng)制刷寫數(shù)據(jù),減少可能由于緩存數(shù)據(jù)未寫盤帶來的不一致。推薦配置分別message 10000,間隔1s。

5.日志保留策略配置

# 日志保留時(shí)長(zhǎng)
log.retention.hours=72
# 段文件配置
log.segment.bytes=1073741824

推薦配置:

日志建議保留三天,也可以更短;段文件配置1GB,有利于快速回收磁盤空間,重啟kafka加載也會(huì)加快(kafka啟動(dòng)時(shí)是單線程掃描目錄(log.dir)下所有數(shù)據(jù)文件)。如果文件過小,則文件數(shù)量比較多。

6.replica復(fù)制配置

num.replica.fetchers=3
replica.fetch.min.bytes=1
replica.fetch.max.bytes=5242880

推薦配置:

  每個(gè)follow從leader拉取消息進(jìn)行同步數(shù)據(jù),follow同步性能由這幾個(gè)參數(shù)決定,分別為:

拉取線程數(shù)(num.replica.fetchers):fetcher配置多可以提高follower的I/O并發(fā)度,單位時(shí)間內(nèi)leader持有更多請(qǐng)求,相應(yīng)負(fù)載會(huì)增大,需要根據(jù)機(jī)器硬件資源做權(quán)衡,建議適當(dāng)調(diào)大;

最小字節(jié)數(shù)(replica.fetch.min.bytes):一般無需更改,默認(rèn)值即可;

最大字節(jié)數(shù)(replica.fetch.max.bytes):默認(rèn)為1MB,這個(gè)值太小,推薦5M,根據(jù)業(yè)務(wù)情況調(diào)整

最大等待時(shí)間(replica.fetch.wait.max.ms):follow拉取頻率,頻率過高,leader會(huì)積壓大量無效請(qǐng)求情況,無法進(jìn)行數(shù)據(jù)同步,導(dǎo)致cpu飆升。配置時(shí)謹(jǐn)慎使用,建議默認(rèn)值,無需配置。

7.分區(qū)數(shù)量配置

num.partitions=5

推薦配置:

默認(rèn)partition數(shù)量1,如果topic在創(chuàng)建時(shí)沒有指定partition數(shù)量,默認(rèn)使用此值。Partition的數(shù)量選取也會(huì)直接影響到Kafka集群的吞吐性能,配置過小會(huì)影響消費(fèi)性能,建議改為5。

名稱欄目:Kafka性能調(diào)優(yōu)
本文URL:http://bm7419.com/article2/phdcoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、微信公眾號(hào)、外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站、云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司