kafka性能调优

kafka性能调优

1、将一个topic拆分为多个partition可以提高吞吐量。

不同partition需 要位于不同的磁盘(可以在同一个机器)。如果多个partition位于同一个磁盘,那么意味着有多个进程同时对一个磁盘的多个文 件进行读写,使得操作系统会对磁盘读写进行频繁调度,也就是破坏了磁盘读写的连续性。

同一个ConsumerGroup内的Consumer和Partition在同一时间内必须保证是一对一的消费关系

2、推荐使用最新的G1来代替CMS作为垃圾回收器。

CMS只能使用在Old区,在清理Young时一般是配合使用ParNew,而G1可以统一两类分区的回收算法。

3、broker处理消息的最大线程数 配置线程数量为cpu核数加1.

num.network.threads=xxx

4、broker处理磁盘IO的线程数 配置线程数量为cpu核数2倍,最大不超过3倍

num.io.threads=xxx

5、log.flush.interval.ms

log数据文件刷盘策略
每当producer写入10000条消息时,刷数据到磁盘 log.flush.interval.messages=10000
每间隔1秒钟时间,刷数据到磁盘
log.flush.interval.ms=1000

6、log.retention.hours

日志保留策略配置
保留三天,也可以更短
log.retention.hours=72

7、log.segment.bytes

段文件配置1GB,有利于快速回收磁盘空间,重启kafka加载也会加快(如果文件过小,则文件数量比较多,
kafka启动时是单线程扫描目录(log.dir)下所有数据文件)
log.segment.bytes=1073741824
replica.lag.time.max.ms:10000
replica.lag.max.messages:4000

8、num.replica.fetchers:1

在Replica上会启动若干Fetch线程把对应的数据同步到本地,而num.replica.fetchers这个参数是用来控制Fetch线程的数量。

每个Partition启动的多个Fetcher,通过共享offset既保证了同一时间内Consumer和Partition之间的一对一关系,又允许我们通过增多Fetch线程来提高效率。

9、default.replication.factor:1

这个参数指新创建一个topic时,默认的Replica数量
Replica过少会影响数据的可用性,太多则会白白浪费存储资源,一般建议在2~3为宜。
buffer.memory:33554432 (32m)

10、block.on.buffer.full

在Producer端用来存放尚未发送出去的Message的缓冲区大小。缓冲区满了之后可以选择阻塞发送或抛出异常,由block.on.buffer.full的配置来决定。

11、compression.type:none

默认发送不进行压缩,推荐配置一种适合的压缩算法,可以大幅度的减缓网络压力和Broker的存储压力。

12、batch.size:16384

Producer会尝试去把发往同一个Partition的多个Requests进行合并,batch.size指明了一次Batch合并后Requests总大小的上限。如果这个值设置的太小,可能会导致所有的Request都不进行Batch。

13、acks:1

这个配置可以设定发送消息后是否需要Broker端返回确认

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值