線程數
在kafka/config/server.properties中配置
#計算密集任務所需線程 # The number of threads that the server uses for receiving requests from the network and sending responses to the network num.network.threads=3 #IO密集任務所需線程 # The number of threads that the server uses for processing requests, which may include disk I/O num.io.threads=8
如果服務器cpu核心為 X ,那么
計算密集任務所需線程 = X
IO密集任務所需線程 = 2 * X
消息清除策略
在kafka/config/server.properties中配置
log.cleanup.policy=delete#啟用刪除策略 #直接刪除,刪除后的消息不可恢復。可配置以下兩個策略: #清理超過指定時間清理: log.retention.hours=16 #超過指定大小后,刪除舊的消息: log.retention.bytes=1073741824
一般日志服務器會保留數據30天,所以沒必要kakfa保存7天,3天就夠了,,如果數據丟失可以從日志服務器中取
上面的是默認策略,其實還有一個策略,
compact策略
它並不是指通過壓縮算法對日志文件進行壓縮,而是對重復的日志進行清理來達到目的。在日志清理過程中,會清理重復的key,最后只會保留最后一條key,可以理解為map的put方法。在清理完后,一些segment的文件大小就會變小,這時候,kafka會將那些小的文件再合並成一個大的segment文件。
另外,通過日志清理功能,我們可以做到刪除某個key的功能。推送value為null的key到kafka,kafka在做日志清理時就會將這條key從日志中刪去。
————————————————
版權聲明:本文為CSDN博主「瘋狂哈丘」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u013332124/article/details/82793381
開啟壓縮
在kafka/config/producer.properties中配置
# specify the compression codec for all data generated: none, gzip, snappy, lz4 compression.type=none
默認是不開啟壓縮,支持格式有,gzip,snappy,lz4
內存
在 kafka/bin/kafka-server-start.sh 中配置
默認1G,生產中的經驗值為4 到 6 G,
最高6G,超過6G效果不明顯,這時建議加服務器
Producer緩沖區優化
在kafka/config/producer.properties中配置
buffer.memory:33554432 (32m) #在Producer端用來存放尚未發送出去的Message的緩沖區大小。緩沖區滿了之后會阻塞, max.block.ms(默認1個小時)過后將會拋出異常
數據文件刷寫策略
在server.properties中配置
# 每當producer寫入10000條消息時,刷數據到磁盤 log.flush.interval.messages=10000 # 每間隔1秒鍾時間,刷數據到磁盤 log.flush.interval.ms=1000
消息大小
kafka對於消息體的大小默認為單條最大值是1M但是在我們應用場景中, 常常會出現一條消息大於1M,如果不對kafka進行配置。則會出現生產者無法將消息推送到kafka或消費者無法去消費kafka里面的數據,
#producer.properties: #也可以在創建topic時動態設置 max.request.size=5242880(5M) #server.properties message.max.bytes=6291456(6M) #consumer.properties: fetch.max.bytes=7340032(7M) #max.request.size < message.max.bytes < fetch.max.bytes
https://blog.csdn.net/zchdjb/article/details/101442939 參考來源