Kafka引數配置詳解

2022-03-28 03:39:02 字數 4779 閱讀 7535

配置引數  

引數說明

broker.id =1

每乙個broker在集群中的唯一標示,要求是正數。當該伺服器的

ip位址發生改變時,如果broker.id沒有變化,則不會影響consumer

s的訊息情況

log.dirs=/log/kafka-logs

kafka資料的存放位址,多個位址的話用逗號分割/log/kafkalogs-1,/log/kafka-logs-2

port =9092

broker server服務埠

message.max.bytes =6525000

表示訊息體的最大大小,單位是位元組

num.network.threads =4

broker處理訊息的最大執行緒數,一般情況下不需要去修改

background.threads =4

一些後台任務處理的執行緒數,例如過期訊息檔案的刪除等,一般

情況下不需要去做修改

queued.max.requests =500

等待io執行緒處理的請求佇列最大數,若是等待io的請求超過這個

數值,那麼會停止接受外部訊息,是一種自我保護機制

host.name

broker的主機位址,若是設定了,那麼會繫結到這個位址上,若

是沒有,會繫結到所有的介面上,並將其中之一傳送到zk,一般

不設定socket.send.buffer.bytes=100*1024

socket的傳送緩衝區,socket的調優引數so_sndbuff

socket.receive.buffer.bytes =100*1024

socket的接受緩衝區,socket的調優引數so_rcvbuff

socket.request.max.bytes =100*1024*1024

socket請求的最大數值,防止serveroom,message.max.byte

s必然要小於socket.request.max.bytes,會被topic建立時

的指定引數覆蓋

log.segment.bytes =1024*1024*1024

topic的分割槽是以一堆segment檔案儲存的,這個控制每個segment的大小,會被topic建立時的指定引數覆蓋

log.roll.hours =24*7

這個引數會在日誌segment沒有達到log.segment.bytes設定的大小,也會強制新建乙個segment會被 topic建立時的指定引數

覆蓋log.cleanup.policy = delete

日誌清理策略選擇有:delete和compact主要針對過期資料的處

理,或是日誌檔案達到限制的額度,會被 topic建立時的指定參

數覆蓋log.retention.minutes=3days

資料儲存的最大時間超過這個時間會根據log.cleanup.policy

設定的策略處理資料,也就是消費端能夠多久去消費資料,log.retention.bytes和log.retention.minutes任意乙個達

到要求,都會執行刪除,會被topic建立時的指定引數覆蓋

log.retention.bytes=-1

topic每個分割槽的最大檔案大小,乙個topic的大小限制 =分割槽數

*log.retention.bytes。-1表示沒有大小限

log.retention.check.interval.ms=5minutes

檔案大小檢查的週期時間,檢查是否需要觸發 log.cleanup.policy中設

置的策略

log.cleaner.enable=false

是否開啟日誌壓縮

log.cleaner.threads = 2

日誌壓縮執行的執行緒數

log.cleaner.io.max.bytes.per.second=none

日誌壓縮時候處理的最大大小

log.cleaner.dedupe.buffer.size=500*1024*1024

日誌壓縮去重時候的快取空間,在空間允許的情況下,越大越好

log.cleaner.io.buffer.size=512*1024

日誌清理時候用到的io塊大小,一般不需要修改

log.cleaner.io.buffer.load.factor =0.9

日誌清理中hash表的擴大因子,一般不需要修改

log.cleaner.backoff.ms =15000

檢查是否觸發日誌清理的間隔

log.cleaner.min.cleanable.ratio=0.5

日誌清理的頻率控制,越大意味著更高效的清理,同時會存在一

些空間上的浪費,會被topic建立時的指定引數覆蓋

log.cleaner.delete.retention.ms =1day

對於壓縮的日誌保留的最長時間,也是客戶端消費訊息的最長時間,同log.retention.minutes的區別在於乙個控制未壓縮資料,乙個控制壓縮後的資料。會被topic建立時的指定引數覆蓋

log.index.size.max.bytes =10*1024*1024

對於segment日誌的索引檔案大小限制,會被topic建立時的指定

引數覆蓋

log.index.interval.bytes =4096 

當執行乙個fetch操作後,需要一定的空間來掃瞄最近的offset大小,設定越大,代表掃瞄速度越快,但是也更耗記憶體,一般情況下不需要搭理這個引數

log.flush.interval.messages=none

log檔案」sync」到磁碟之前累積的訊息條數,因為磁碟io操作是乙個慢操作,但又是乙個」資料可靠性"的必要手段,所以此引數的設定,需要在"資料可靠性"與"效能"之間做必要的權衡.如果此值過大,將會導致每次"fsync"的時間較長(io阻塞),如果此值過小,將會導致"fsync"的次數較多,這也意味著整體的client請求有一定的延遲.物理server故障,將會導致沒有fsync的訊息丟失.

log.flush.scheduler.interval.ms =3000

檢查是否需要固化到硬碟的時間間隔

log.flush.interval.ms = none

僅僅通過interval來控制訊息的磁碟寫入時機,是不足的.此引數用於控制"fsync"的時間間隔,如果訊息量始終沒有達到閥值,但是離上一次磁碟同步的時間間隔達到閥值,也將觸發.

log.delete.delay.ms =60000

檔案在索引中清除後保留的時間一般不需要去修改

log.flush.offset.checkpoint.interval.ms =6000

控制上次固化硬碟的時間點,以便於資料恢復一般不需要去修改

auto.create.topics.enable =true

是否允許自動建立topic,若是false,就需要通過命令建立

num.partitions =1

每個topic的分割槽個數,若是在topic建立時候沒有指定的話,會被topic建立時的指定引數覆蓋

controller.socket.timeout.ms =30000

partition leader與replicas之間通訊時,socket的超時時間

controller.message.queue.size=10

partition leader與replicas資料同步時,訊息的佇列尺寸

replica.lag.time.max.ms =10000

replicas響應partition leader的最長等待時間,若是超過這個時間,就將replicas列入isr(in-sync replicas),並認為

它是死的,不會再加入管理中

replica.lag.max.messages =4000

如果follower落後與leader太多,將會認為此follower[或者說partition relicas]已經失效,通常,在follower與leader通訊時,因為網路延遲或者鏈結斷開,總會導致replicas中訊息同步滯後,如果訊息之後太多,leader將認為此follower網路延遲較大或

者訊息吞吐能力有限,將會把此replicas遷移到其他follower中.在broker數量較少,或者網路不足的環境中,建議提高此值

replica.socket.timeout.ms=30*1000

follower與leader之間的socket超時時間

replica.socket.receive.buffer.bytes=64*1024

leader複製時候的socket快取大小

num.replica.fetchers=1

leader進行複製的執行緒數,增大這個數值會增加follower的io

leader.imbalance.per.broker.percentage =10

leader的不平衡比例,若是超過這個數值,會對分割槽進行重新的

平衡zookeeper.connect = localhost:2181

zookeeper集群的位址,可以是多個,多個之間用逗號分割host

name1:port1,hostname2:port2,hostname3:port3

zookeeper.session.timeout.ms=6000

zookeeper的最大超時時間,就是心跳的間隔,若是沒有反映,

那麼認為已經死了,不易過大

zookeeper.connection.timeout.ms =6000

zookeeper的連線超時時間

zookeeper.sync.time.ms =2000

zookeeper集群中leader和follower之間的同步時間

kafka引數配置優化

非負整數,用於唯一標識broker broker.id 0 broker 服務監聽埠 port 9092 broker 發布給生產者消費者的hostname,會儲存在zookeeper。配置好這個host可以實現內網外網同時訪問。advertised.host.name host1 broker 發...

Kafka架構探險(三) Kafka引數詳解

kafka提供很多的引數 broker引數 topic引數 producer引數 consumer引數等,方便我們對kafka的效能做調整,本博文就來歸納總結下常見的引數 引數的說明是基於kafka 2.12 2.3.0版本 詳細可以參考官網 broker端的引數在kafka目錄下的config s...

Kafka詳解二 如何配置Kafka集群

kafka集群配置比較簡單,為了更好的讓大家理解,在這裡要分別介紹下面三種配置 1.首先啟動zookeeper服務 kafka本身提供了啟動zookeeper的指令碼 在kafka bin 目錄下 和zookeeper配置檔案 在kafka config 目錄下 首先進入kafka的主目錄 可通過 ...