這篇文章主要說一下在生產過程中的kafka常用的調優參數,
首先kafka的版本是0.9.0.1,針對以下幾個方面來說,
針對kafka的堆內存:
針對kafka的集群調優:
kafka的的消息機制有三種,同步 異步和 oneway
同步(sync)的意味着消息是以batch的方式push,這樣會極大的提高broker的性能,但這樣也會增加數據丟失的風險
異步(async)的參數比較多,主要有四個參數
其中第二個消息確認機制參數有三種,當它的值為1時,kafka的leader 的partition會接受到數據,但如果leader掛了,數據會丟失.如果設置為0,那么producer不會等到broker的響應,也就是說producer不管消息發出去的死活,這樣可以得到最大的吞吐量,但是數據丟失風險極高.如果設置為-1,那么producer會等到所有的partition收到消息時候等到broker的一個確認.這樣可以保證最高可靠性,但同時時效性也就降低了.
第三個參數表示緩存消息的時間,例如5秒在將數據發出去,吞吐量增大了,同時時效性也就降低了
第四個參數表示緩存的最大消息數量
第五個參數當設置為-1時,消息會阻塞,不會丟掉,當設置為0時,buffer隊列滿了會直接丟掉.
第六個參數表示一批數據量的大小,當達到這個數值時候,producer才會發送數據.
對於ONEWAY來說,消息可靠性最低,但是低延遲,高吞吐,對於某些不需要高可靠性的場景比較適用.
此外 在server.properties中可增加兩個參數
replica.socket.timeout.ms = 300000 #當集群之間網絡不穩定時,調大該參數
replica.lag.time.max.ms= 600000# 如果網絡不好,或者kafka集群壓力較大,會出現副本丟失,然后會頻繁復制副本,導致集群壓力更大,此時可以調大該參數
在consumer.properties中可增加兩個參數
zookeeper.connection.timeout.ms = 60000
zookeeper.sync.time.ms = 5000
上面兩個參數時間間隔可調大一點,避免網絡問題引起的節點誤判下線
最后合理設置副本數,如果broker的數量為5,那么副本設置3個足夠,避免過多的冗余.
以上就是常用的kafka參數調優,如有其它,歡迎大家補充.