Kafka 做爲一個高吞吐的消息中間件和傳統的消息中間件一個很大的不一樣點就在於它的日誌其實是以日誌的方式默認保存在/kafka-logs文件夾中的。雖然默認有7天清楚的機制,可是在數據量大,而磁盤容量不足的狀況下,常常出現沒法寫入的狀況。如何調整Kafka的一些默認參數就顯得比較關鍵了。這裏筆者整理了一些常見的配置參數供你們參考:apache
分段策略屬性
屬性名 | 含義 |默認值
---|---|--
log.roll.{hours,ms} | 日誌滾動的週期時間,到達指定週期時間時,強制生成一個新的segment |168(7day)
log.segment.bytes| 每一個segment的最大容量。到達指定容量時,將強制生成一個新的segment | 1G(-1爲不限制)
|log.retention.check.interval.ms |日誌片斷文件檢查的週期時間|60000緩存
日誌刷新策略日誌
Kafka的日誌其實是開始是在緩存中的,而後根據策略按期一批一批寫入到日誌文件中去,以提升吞吐率。中間件
屬性名 | 含義 | 默認值 |
---|---|---|
log.flush.interval.messages | 消息達到多少條時將數據寫入到日誌文件 | 10000 |
log.flush.interval.ms | 當達到該時間時,強制執行一次flush | null |
log.flush.scheduler.interval.ms | 週期性檢查,是否須要將信息flush | 很大的值 |
日誌保存清理策略索引
屬性名 | 含義 | 默認值 |
---|---|---|
log.cleanup.polict | 日誌清理保存的策略只有delete和compact兩種 | delete |
log.retention.hours | 日誌保存的時間,能夠選擇hours,minutes和ms | 168(7day) |
log.retention.bytes | 刪除前日誌文件容許保存的最大值 | -1 |
log.segment.delete.delay.ms | 日誌文件被真正刪除前的保留時間 | 60000 |
log.cleanup.interval.mins | 每隔一段時間多久調用一次清理的步驟 | 10 |
log.retention.check.interval.ms | 週期性檢查是否有日誌符合刪除的條件(新版本使用) | 300000 |
這裏特別說明一下,日誌的真正清楚時間。當刪除的條件知足之後,日誌將被「刪除」,可是這裏的刪除其實只是將該日誌進行了「delete」標註,文件只是沒法被索引到了而已。可是文件自己,仍然是存在的,只有當過了log.segment.delete.delay.ms 這個時間之後,文件纔會被真正的從文件系統中刪除。文檔