线程数
在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