Kafka server 部署配置優化

Kafka配置優化其實都是修改server.properties文件中參數值

1、網絡和io操作線程配置優化

     # broker處理消息的最大線程數
        num.network.threads=xxx
    #  broker處理磁盤IO的線程數
        num.io.threads=xxx

建議配置:

一般num.network.threads主要處理網絡io,讀寫緩衝區數據,基本沒有io等待,配置線程數量爲cpu核數加1.

num.io.threads主要進行磁盤io操作,高峯期可能有些io等待,因此配置需要大些。配置線程數量爲cpu核數2倍,最大不超過3倍.

2、log數據文件刷盤策略

爲了大幅度提高producer寫入吞吐量,需要定期批量寫文件。

建議配置:

# 每當producer寫入10000條消息時,刷數據到磁盤

log.flush.interval.messages=10000

# 每間隔1秒鐘時間,刷數據到磁盤

log.flush.interval.ms=1000 

3、日誌保留策略配置

當kafka server的被寫入海量消息後,會生成很多數據文件,且佔用大量磁盤空間,如果不及時清理,可能磁盤空間不夠用,kafka默認是保留7天。

建議配置:

# 保留三天,也可以更短 

log.retention.hours=72

# 段文件配置1GB,有利於快速回收磁盤空間,重啓kafka加載也會加快(如果文件過小,則文件數量比較多,

# kafka啓動時是單線程掃描目錄(log.dir)下所有數據文件)

log.segment.bytes=1073741824 

4、replica複製配置

每個follow從leader拉取消息進行同步數據,follow同步性能由這幾個參數決定,分別爲拉取線程數(num.replica.fetchers)、最小字節數(replica.fetch.min.bytes)、最大字節數(replica.fetch.max.bytes)、最大等待時間(replica.fetch.wait.max.ms)

建議配置:

num.replica.fetchers 配置多可以提高follower的I/O併發度,單位時間內leader持有跟多請求,相應負載會增大,需要根據機器硬件資源做權衡

replica.fetch.min.bytes=1  默認配置爲1字節,否則讀取消息不及時

replica.fetch.max.bytes= 5  * 1024 * 1024 默認爲1MB,這個值太小,5MB爲宜,根據業務情況調整

replica.fetch.wait.max.ms  follow拉取頻率,頻率過高,會導致cpu飆升,因爲leader無數據同步,leader會積壓大量無效請求情況,又因爲0.8.2.x版本存在bug,定時器超時檢查比較消耗CPU,使用者需要做好權衡

5、配置jmx服務

kafka server中默認是不啓動jmx端口的,需要用戶自己配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章