Kafka 日志消息保存時間


Kafka 日志消息保存時間總結

Kafka 作為一個高吞吐的消息中間件和傳統的消息中間件一個很大的不同點就在於它的日志實際上是以日志的方式默認保存在/kafka-logs文件夾中的。雖然默認有7天清楚的機制,但是在數據量大,而磁盤容量不足的情況下,經常出現無法寫入的情況。如何調整Kafka的一些默認參數就顯得比較關鍵了。這里筆者整理了一些常見的配置參數供大家參考:

分段策略屬性

屬性名 含義 默認值
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 這個時間以后,文件才會被真正的從文件系統中刪除。

參考文檔:
https://kafka.apache.org/documentation/#design


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM