名稱 |
說明 |
類型 |
默認值 |
有效值 |
重要性 |
zookeeper.connect |
zookeeper集群的地址, 可以是多個, 多個之間用逗號分割 |
string |
localhost: 2181 |
ip1 :port1 ,ip2 :port2 |
高 |
zookeeper.connection.timeout.ms |
客戶端在建立通zookeeper 連接中的最大等待時間 |
int |
null |
6000 |
高 |
zookeeper.session.timeout.ms |
ZooKeeper的session的超時 時間,如果在這段時間內沒 有收到ZK的心跳,則會被認 為該Kafka server掛掉了。 如果把這個值設置得過低可 能被誤認為掛掉,如果設置 得過高,如果真的掛了,則需 要很長時間才能被server得知 |
int |
6000 |
|
高 |
zookeeper.sync.time.ms |
一個ZK follower能落后leader 的時間 |
int |
2000 |
|
高 |
listeners |
監聽列表(以逗號分隔 不同的 協議(如plaintext,trace,ssl、 不同的IP和端口)),hostname 如果設置為0.0.0.0則綁定所 有的網卡地址;如果hostname 為空則綁定默認的網卡。 如果 沒有配置則默認為 java.net .InetAddress .getCanonicalHostName() |
string |
null |
如:PLAINTEXT: //myhost: 9092, TRACE://: 9091 或 PLAINTEXT: //0.0.0.0 :9092, |
高 |
host.name |
。如果設置了它, 會僅綁定這個 地址。 如果沒有設置,則會 綁定所有 的網絡接口,並提交 一個給ZK。 不推薦使用 只有當 listeners沒 有設置時才有必要使用。 |
string |
“’ |
如: ”localhost” |
高 |
port |
server用來接受 client連接的端口。 不推薦使用,使用 listeners配置 項代替;只有在 listeners沒有 配置時才使用。 |
int |
9092 |
|
高 |
advertised.host.name |
會將hostname通知給 生產者 和消費者,在多網卡 時需要 設置該值為另一個ip地址。 如果沒有設置該值, 則返回 配置項host.name設置的值, 如果host.name沒有設 置則返回java.net.InetAddress. getCanonicalHostName() 不推薦使用 只有當 advertised.listeners或 listeners沒有設置時才 有必要使用。 |
string |
null |
|
高 |
advertised.listeners |
設置不同於listeners配置 的監聽列表即不同於 listeners設置的網卡地址 及端口;如果沒有配置, 會使用listeners的值 |
string |
null |
|
高 |
advertised.port |
分發這個端口給所有的 producer,consumer和 其他broker來建立連接 。如果此端口跟server 綁定的端口不同, 則才有必要設置。 不推薦使用 只有當 advertised.listeners 或listeners沒有設置 時才有必要使用。 |
int |
null |
|
高 |
auto.create.topics.enable |
是否允許自動創建topic。 如果設為true,那么 produce,consume 或者fetch metadata 一個不存在的topic時, 就會自動創建一個默認 replication factor和 partition number的topic。 |
boolean |
true |
|
高 |
background.threads |
一些后台任務處理的 線程數,例如過期消 息文件的刪除等, 一般情況下不需要去 做修改 |
int |
10 |
|
高 |
broker.id |
每一個broker在集群中 的唯一表示,要求是正數。 當該服務器的IP地址發 生改變時,broker.id沒有 變化,則不會影響 consumers的消息情況。 |
int |
-1 |
|
高 |
compression.type |
指定topic的壓縮類型。 除了支持’gzip’, ‘snappy’, ‘lz4’外,還支持 ”uncompressed(不壓縮) ”以及produce r(由producer來指定) |
string |
producer |
|
高 |
delete.topic.enable |
是否啟動刪除topic。 如果設置為false, 你在刪除topic的時 候無法刪除,但是會打 上一個你將刪除該topic 的標記,等到你修改這 一屬性的值為true后重 新啟動Kafka集群的時候 ,集群自動將那些標記 刪除的topic刪除掉,對應 的log.dirs目錄下的topic 目錄和數據也會被刪除。 而將這一屬性設置為true之后, 你就能成功刪除你想要 刪除的topic了 |
boolean |
false |
|
高 |
auto.leader.rebalance.enable |
一個后台線程會周期性 的自動嘗試,為所有的 broker的每個partition 平衡leadership,使kafka 的leader均衡。 |
boolean |
true |
|
高 |
leader.imbalance.check.interval.seconds |
檢查leader是否均衡的 時間間隔(秒) |
long |
300 |
|
高 |
leader.imbalance.per.broker.percentage |
每個broker允許的不平衡 的leader的百分比。 如果每個broker超過 了這個百分比,復制控 制器會重新平衡leadership。 |
int |
10 |
|
高 |
log.flush.interval.messages |
數據flush(sync)到硬盤 前之前累積的消息條數 ,因為磁盤IO操作是一 個慢操作,但又是一個 ”數據可靠性”的必要 手段,所以此參數的設置 ,需要在”數據可靠性” 與”性能”之間做必要 的權衡.如果此值過大, 將會導致每次”fsync” 的時間較長 (IO阻塞),如果此值過 小,將會導致”fsync”的 次數較多,這也意味着 整體的client請求有一 定的延遲.物理server 故障,將會導致沒有 fsync的消息丟失 |
long |
9223372 0368547 75807 (此為一 個數字) |
|
高 |
log.flush.interval.ms |
當達到下面的時間 (ms)時,執行一次 強制的flush操作。 interval.ms和 interval.messages 無論哪個達到, 都會flush。 |
long |
null |
|
高 |
log.flush.offset.checkpoint.interval.ms |
記錄上次把log刷 到磁盤的時間點的 頻率,用來日后的 recovery。通常 不需要改變 |
long |
60000 |
|
高 |
log.flush.scheduler.interval.ms |
檢查是否需要固 化到硬盤的時間 間隔 |
long |
92233720 3685477 5807 (此為一 個數字) |
|
高 |
log.retention.bytes |
topic每個分區的 最大文件大小, 一個topic的大小 限制 = 分區數* log.retention.bytes。 -1沒有大小限 log.retention.bytes和log.retention.minutes 任意一個達到要求, 都會執行刪除, 會被topic創建時 的指定參數覆蓋 |
loong |
-1 |
|
高 |
log.retention.hours |
日志保存時間, 默認為7天(168小時) 。超過這個時間會根 據policy處理數據。 bytes和minutes無論 哪個先達到都會觸發 |
int |
168 |
|
高 |
log.retention.minutes |
數據存儲的最大時間 超過這個時間會根據 log.cleanup.policy 設置的策略處理數 據,也就是消費端能 夠多久去消費數據 |
|
|
|
|
log.retention.bytes和log.retention.minutes任意一個達到要求,都會執行刪除,會被topic創建時的指定參數覆蓋 |
int |
null |
|
高 |
|
log.roll.hous |
當達到下面時間, 會強制新建一個segment。 這個參數會在日志 segment沒有達到 log.segment.bytes 設置的大小,也會強制 新建一個segment會 |
int |
168 |
|
高 |
log.roll.jitter.{ms,hours} |
從logRollTimeMillis抽 離的jitter最大數目 |
int |
0 |
|
高 |
log.segment.bytes |
topic partition的日志存 放在某個目錄下諸多 文件中,這些文件將 partition的日志切分成 一段一段的;這個屬性就 是每個文件的最大尺寸; 當尺寸達到這個數值時, 就會創建新文件。 此設置可以由每個topic 基礎設置時進行覆蓋 |
long |
1G= 1024* 1024* 1024 |
|
高 |
log.segment.delet.delay.ms |
刪除文件系統上文件 的等待時間,默認是 1分鍾 |
long |
6000 |
|
高 |
message.max.bytes |
表示一個服務器能夠 接收處理的消息的最 大字節數,注意這個 值producer和consumer 必須設置一致,且不要大於fetch.message.max.bytes 屬性的值該值默認是 1000012字節,大概900KB |
|
|
|
|
int |
1000012 |
|
高 |
|
|
min.insync.replicas |
該屬性規定了最小的 ISR數。當producer設置request.required.acks 為all或-1時,指定副 本(replicas)的最小數目 (必須確認每一個repica 的寫數據都是成功的), 如果這個數目沒有達到, producer會產生異常。 |
int |
1 |
|
高 |
num.io.threads |
服務器用來處理請求 的I/O線程的數目; 這個線程數目至少要 等於硬盤的個數。 |
int |
8 |
|
高 |
num.network.threads |
服務器用來處理網絡 請求的網絡線程數目; 一般你不需要更改這 個屬性 |
int |
3 |
|
高 |
num.recovery.threads.per.data.dir |
每數據目錄用於日志 恢復啟動和關閉沖洗 時的線程數量 |
int |
1 |
|
高 |
num.replica.fetchers |
從leader進行復制 消息的線程數,增大這個 數值會增加follower的IO |
int |
1 |
|
高 |
offset.metadata.max.bytes |
允許client(消費者)保存 它們元數據(offset)的 最大的數據量 |
int |
4096(4kb) |
|
|
offsets.commit.required.acks |
在offset commit可以接 受之前,需要設置確認的 數目,一般不需要更改 |
int |
-1 |
|
高 |
offsets.commit.timeout.ms |
offset commit會延遲 直至此超時或所需的 副本數都收到offset commit, 這類似於producer請 求的超時 |
int |
5000 |
|
高 |
offsets.load.buffer.size |
此設置對應於offset manager在讀取緩存 offset segment的批量 大小(以字節為單位). |
int |
5242880 |
|
高 |
offsets.retention.check.interval.ms |
offset管理器檢查陳 舊offsets的頻率 |
long |
600000 (10分鍾) |
|
高 |
offsets.topic.num.partitions |
偏移的提交topic的分 區數目。 由於目前不 支持部署之后改變, 我們建議您使用生產 較高的設置 (例如,100-200) |
int |
50 |
|
高 |
offsets.topic.replication.factor |
復制因子的offset提交topic。 較高的設置 (例如三個或四個), 建議以確保更高的 可用性。如果offset topic 創建時,broker比 復制因子少, offset topic將以較 少的副本創建。 |
short |
3 |
|
高 |
offsets.topic.segment.bytes |
offset topic的Segment 大小。因為它使用 壓縮的topic,所有 Sgment的大小應該 保持小一點,以促進更 快的日志壓實和負載 |
int |
104857600 |
|
高 |
queued.max.requests |
在網絡線程 (network threads) 停止讀取新請求之前, 可以排隊等待I/O線程 處理的最大請求個數。 若是等待IO的請求超 過這個數值,那么會 停止接受外部消息 |
int |
500 |
|
高 |
quota.consumer.default |
以clientid或 consumer group區分 的consumer端每秒 可以抓取的最大byte |
long |
92233720 36854775 807 (此為一 個數字) |
|
高 |
quota.producer.default |
producer端每秒可 以產生的最大byte |
long |
92233720 3685477 5807 (此為一 個數字) |
|
高 |
replica.fetch.max.bytes |
replicas每次獲取數 據的最大字節數 |
int |
1048576 |
|
高 |
replica.fetch.min.bytes |
fetch的最小數據尺寸, 如果leader中尚未同步 的數據不足此值,將會 阻塞,直到滿足條件 |
int |
1 |
|
高 |
replica.fetch.wait.max.ms |
replicas同leader之間 通信的最大等待時間, 失敗了會重試。這個值 須小於 replica.lag.time.max.ms, 以防止低吞吐量 主題ISR頻繁收縮 |
int |
500 |
|
高 |
replica.high.watermark.checkpoint.interval.ms |
每一個replica存儲自己 的high watermark到磁 盤的頻率,用來日后 的recovery |
int |
5000 |
|
高 |
replica.socket.timeout.ms |
復制數據過程中, replica發送給leader的 網絡請求的socket超 時時間,至少等於 replica.fetch.wait.max.ms |
int |
30000 |
|
高 |
replica.socket.receive.buffer.bytes |
復制過程leader接 受請求的buffer大小 |
int |
65536 (64*1024) |
|
高 |
replica.lag.time.max.ms |
replicas響應partition leader 的最長等待時間, 若是超過這個時間, 就將replicas列入 ISR(in-sync replicas), 並認為它是死的, 不會再加入管理中 |
long |
10000 |
|
高 |
replica.lag.max.messages |
如果follower落后與 leader太多,將會認 為此follower [或者說partition relicas] 已經失效。 通常,在 follower與leader通訊時, 因為網絡延遲或者鏈 接斷開, 總會導致replicas中消息 同步滯后如果消息之 后太多,leader將認為 此follower網絡延遲 較大或者消息吞吐 能力有限,將會把此 replicas遷移到其他 follower中.在broker數 量較少,或者網絡不足 的環境中,建議提高此值. |
int |
4000 |
|
高 |
request.timeout.ms |
producer等待響應的 最長時間,如果超時 將重發幾次,最終報錯 |
int |
30000 |
|
高 |
socket.receive.buffer.bytes |
socket用於接收網 絡請求的緩存大小 |
int |
102400 |
|
高 |
socket.request.max.bytes |
server能接受的請求 的最大的大小, 這是為了防止server 跑光內存,不能大 於Java堆的大小。 |
int |
104857600 (100*1024 *1024) (此為一 個表達式) |
|
高 |
socket.send.buffer.bytes |
server端用來處理 socket連接的 SO_SNDBUFF緩沖大小 |
int |
102400 |
|
高 |
controller.socket.timeout.ms |
partition管理控制 器進行備份時, socket的超時時間 |
int |
30000 |
|
高 |
controller.message.queue.size |
partition leader與 replicas數據同步時, 消息的隊列大小 |
int |
10 |
|
高 |
num.partitions |
每個topic的分區個數, 若是在topic創建時候 沒有指定的話會被 topic創建時的指定 參數覆蓋 |
int |
1 |
推薦 設為8 |
高 |
log.index.interval.bytes |
當執行一次fetch后, 需要一定的空間掃描 最近的offset,設置的 越大越好,但是也更耗 內存一般使用默認值就可以 |
int |
4096 |
|
中 |
log.index.size.max.bytes |
每個log segment的 最大尺寸。注意, 如果log尺寸達到這 個數值,即使尺寸 沒有超過log.segment.bytes 限制,也需要產生新的 log segment。 |
int |
10485760 |
|
中 |
fetch.purgatory.purge.interval.requests |
非立即答復請求放入 purgatory中, 當到達或超出interval 時認為request complete |
int |
1000 |
|
中 |
producer.purgatory.purge.interval.requests |
producer請求清除時間 |
int |
1000 |
|
中 |
default.replication.factor |
一個topic ,默認分區 的replication個數 , 不能大於集群中 broker的個數。 |
int |
1 |
|
中 |
group.max.session.timeout.ms |
注冊consumer允許 的最大超時時間 |
int |
300000 |
|
中 |
group.min.session.timeout.ms |
注冊consumer允許 的最小超時時間 |
int |
6000 |
|
中 |
inter.broker.protocol.version |
broker協議版本 |
string |
0.10.0 |
|
中 |
log.cleaner.backoff.ms |
檢查log是否需要 clean的時間間隔 |
long |
15000 |
|
中 |
log.cleaner.dedupe.buffer.size |
日志壓縮去重時候的 緩存空間,在空間允許 的情況下,越大越好 |
long |
134217 728
|
|
中 |
log.cleaner.delete.retention.ms |
保存時間;保存壓縮 日志的最長時間; 也是客戶端消費消息的 最長時間, 同log.retention.minutes 的區別在於一個控制未 壓縮數據,一個控制壓 縮后的數據;會被topic 創建時的指定時間覆蓋。 |
long |
86400000 (一天) |
|
中 |
log.cleaner.enable |
是否啟動壓縮日志, 當這個屬性設置為false時 ,一旦日志的保存時間或 者大小達到上限時, 就會被刪除; 如果設置為true, 則當保存屬性達到上限時, 就會進行壓縮 |
boolean |
false |
|
中 |
log.cleaner.threads |
日志壓縮運行的線程數 |
int |
1 |
|
中 |
log.cleaner.io.buffer.load.factor |
日志清理中hash表的 擴大因子,一般不需 要修改 |
double |
0.9 |
|
中 |
log.cleaner.io.buffer.size |
log cleaner清除過程 中針對日志進行索引 化以及精簡化所用到 的緩存大小。最好設置大 點,以提供充足的內存 |
int |
524288 |
|
中 |
log.cleaner.io.max.bytes.per.second |
進行log compaction時, log cleaner可以擁有的 最大I/O數目。這項設置 限制了cleaner,以避免干 擾活動的請求服務。 |
double |
1.79769313 48623157E308 (此為一 個數字) |
|
中 |
log.cleaner.min.cleanable.ratio |
這項配置控制 log compactor 試圖清理日志的頻率 (假定[log compaction] 是打開的)。 默認避免清理壓縮超過 50%的日志。這個比率 綁定了備份日志所消耗 的最大空間(50%的 日志備份時壓縮率為50%)。 更高的比率則意味着浪 費消耗更少,也就可 以更有效的清理更多 的空間。這項設置在 每個topic設置中可以覆蓋 |
double |
0.5 |
|
中 |
log.preallocate |
是否預創建新文件,windows推薦使用 |
boolean |
false |
|
中 |
log.retention.check.interval.ms |
檢查日志分段文件的間隔時間,以確定是否文件屬性是否到達刪除要求。 |
long |
300000 |
|
中 |
max.connections.per.ip |
一個broker允許從每個ip地址連接的最大數目 |
int |
2147483647 =Int. MaxValue |
|
中 |
max.connections.per.ip.overrides |
每個IP或主機名覆蓋連接的默認最大數量 |
string |
“” |
|
中 |
replica.fetch.backoff.ms |
復制數據時失敗等待時間 |
int |
1000 |
|
中 |
reserved.broker.max.id |
broker可以使用的最大ID值 |
int |
1000 |
|
中 |