1.分區(qū)數(shù)(num.partition)的選擇
num.partition指定新創(chuàng)建的主題的分區(qū)數(shù)锡足,只能增,不能減。一般來說 分區(qū)數(shù) 大于等于 消費(fèi)者數(shù)榄笙。
2.日志保留策略
kafka默認(rèn)會(huì)保留消息一周,通過 log.retention.ms/hours等進(jìn)行設(shè)置祷蝌。
另一種方式是通過保留的消息的大小茅撞。如log.retention.bytes=1000000000表示當(dāng)分區(qū)數(shù)據(jù)總量超過1GB時(shí),消息會(huì)被刪除
3.單個(gè)消息的大小(message.max.bytes)
默認(rèn)為1MB巨朦。這個(gè)值對(duì)性能有顯著的影響米丘。Kafka設(shè)計(jì)的初衷是迅速處理短小的消息,一般10K大小的消息吞吐性能最好糊啡。
message.max.bytes必須小于consumer設(shè)置的fetch.message.max.bytes拄查,否則消費(fèi)者無法讀取比較大的信息
4.虛擬機(jī)的網(wǎng)絡(luò)優(yōu)化
對(duì)分配給socket讀寫緩沖區(qū)的內(nèi)存大小進(jìn)行調(diào)整可以顯著提升網(wǎng)絡(luò)的傳輸性能。net.core.wmem.default和net.core.reme_默認(rèn)值為128K棚蓄,可以將其設(shè)置為2MB或者其最大值
除了設(shè)置socket堕扶,還要設(shè)置TCP socket的讀寫緩沖區(qū),他們的參數(shù)為net.ipv4.tcp_wmem和net.ipv4.tcp.rmem梭依。盡量調(diào)大唄
5.垃圾回收器設(shè)置
推薦使用G1回收器稍算。kafka對(duì)堆內(nèi)存使用率很高,容易產(chǎn)生垃圾對(duì)象役拴。
可以設(shè)置InitiatingHeapOccupancyPercent為35(默認(rèn)45%邪蛔,表示堆內(nèi)存的使用率達(dá)到45%之前,G1不會(huì)啟動(dòng)垃圾回收)