Kafka-生产者、broker、消费者的调优参数总结
生产环境下,为了尽可能提升Kafka的整体吞吐量,可以对Kafka的相关配置参数进行调整,以达到提升整体性能的目的。
本文主要从Kafka的不同组件出发,讲解各组件涉及的配置参数和参数含义。
一、生产者(producer.properties或者代码中)
1、acks:Producer需要Leader确认的Producer请求的应答数。
(1)acks = 0: 表示Producer请求立即返回,不需要等待Leader的任何确认。这种方案有最高的吞吐率,但是不保证消息是否真的发送成功。
(2)acks = -1: 表示分区Leader必须等待消息被成功写入到所有的ISR副本(同步副本)中才认为Producer请求成功。这种方案提供最高的消息持久性保证,但是理论上吞吐率也是最差的。
(3)acks = 1: 表示Leader副本必须应答此Producer请求并写入消息到本地日志,之后Producer请求被认为成功。如果此时Leader副本应答请求之后挂掉了,消息会丢失。这个方案,提供了不错的持久性保证和吞吐。
2、buffer.memory:该参数用于指定Producer端用于缓存消息的缓冲区大小,单位为字节,默认值为:33554432即32MB。
3、compression.type:压缩器,目前支持none(不压缩),gzip,snappy和lz4。
4、retries:Producer发送消息失败重试的次数。重试时Producer会重新发送之前由于瞬时原因出现失败的消息。瞬时失败的原因可能包括:元数据信息失效、副本数量不足、超时、位移越界或未知分区等。倘若设置了retries > 0,那么这些情况下Producer会尝试重新发送。
5、batch.size:默认值为16KB,Producer按照batch进行发送,当batch满了后,Producer会把消息发送出去。
6、linger.ms:Producer是按照batch进行发送的,但是还要看linger.ms的值,默认是0,表示不做停留。为了减少了网络IO,提升整体的性能。建议设置5-100ms。
二、Broker(server.properties)
1、replica.lag.time.max.ms:ISR中,如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该时间阈值,默认30s。
2、auto.leader.rebalance.enable:默认是true。自动Leader Partition 平衡。
3、leader.imbalance.per.broker.percentage:默认是10%。每个Broker允许的不平衡的Leader的比率。如果每个Broker超过了这个值,控制器会触发Leader的平衡。
4、leader.imbalance.check.interval.seconds:默认值300秒。检查Leader负载是否平衡的间隔时间。
5、log.segment.bytes:Kafka中log日志是分成一块块存储的,此配置是指log日志划分 成块的大小,默认值1G。
6、log.index.interval.bytes:默认4KB,Kafka里面每当写入了4KB大小的日志(.log),然后就往index文件里面记录一个索引。
7、log.retention.hours:Kafka中数据保存的时间,默认7天。
8、log.retention.minutes:Kafka中数据保存的时间,分钟级别,默认关闭。
9、log.retention.ms:Kafka中数据保存的时间,毫秒级别,默认关闭。
10、log.retention.check.interval.ms:检查数据是否保存超时的间隔,默认是5分钟。
11、log.retention.bytes:默认等于-1,表示无穷大。超过设置的所有日志总大小,删除最早的segment。
12、log.cleanup.policy:默认是delete,表示所有数据启用删除策略;如果设置值为compact,表示所有数据启用压缩策略。
13、num.io.threads:默认是8。负责写磁盘的线程数。整个参数值要占总核数的50%。
14、num.replica.fetchers:副本拉取线程数,这个参数占总核数的50%的1/3。
15、num.network.threads:默认是3。数据传输线程数,这个参数占总核数的50%的2/3 。
16、log.flush.interval.messages:强制页缓存刷写到磁盘的条数,默认是long的最大值,9223372036854775807。一般不建议修改,交给系统自己管理。
17、log.flush.interval.ms:每隔多久,刷数据到磁盘,默认是null。一般不建议修改,交给系统自己管理。
三、消费者(consumer.properties或者代码中)
1、bootstrap.servers:向Kafka集群建立初始连接用到的host/port列表。
2、key.deserializer和value.deserializer:指定接收消息的key和value的反序列化类型。一定要写全类名。
3、group.id:标记消费者所属的消费者组。
4、enable.auto.commit:默认值为true,消费者会自动周期性地向服务器提交偏移量。
5、auto.commit.interval.ms:如果设置了 enable.auto.commit 的值为true, 则该值定义了消费者偏移量向Kafka提交的频率,默认5s。
6、auto.offset.reset:当Kafka中没有初始偏移量或当前偏移量在服务器中不存在(如,数据被删除了),该如何处理?
(1)earliest:自动重置偏移量到最早的偏移量。
(2)latest:默认,自动重置偏移量为最新的偏移量。
(3)none:如果消费组原来的偏移量不存在,则向消费者抛异常。
7、offsets.topic.num.partitions:__consumer_offsets的分区数,默认是50个分区。
8、heartbeat.interval.ms:Kafka消费者和coordinator之间的心跳时间,默认3s。该条目的值必须小于 session.timeout.ms ,也不应该高于 session.timeout.ms 的1/3。
9、session.timeout.ms:Kafka消费者和coordinator之间连接超时时间,默认45s。超过该值,该消费者被移除,消费者组执行再平衡。
10、max.poll.interval.ms:消费者处理消息的最大时长,默认是5分钟。超过该值,该消费者被移除,消费者组执行再平衡。
11、fetch.min.bytes:默认1个字节。消费者获取服务器端一批消息最小的字节数。
12、fetch.max.wait.ms:默认500ms。如果没有从服务器端获取到一批数据的最小字节数。该时间到,仍然会返回数据。
13、fetch.max.bytes:默认值: 52428800字节,即50MB。消费者获取服务器端一批消息最大的字节数。如果服务器端一批次的数据大于该值仍然可以拉取回来这批数据,因此,这不是一个绝对最大值。一批次的大小受message.max.bytes (broker config)or max.message.bytes (topic config)影响。
14、max.poll.records:一次poll拉取数据返回消息的最大条数,默认500条。
四、总结
本文总结了Kafka参数,包含了Producer、Broker和Consumer的参数,并且给出了调优Kafka的关键参数配置,可以直接用于生产环境。
Kafka-生产者、broker、消费者的调优参数总结的更多相关文章
- 《Apache Kafka实战》读书笔记-调优Kafka集群
<Apache Kafka实战>读书笔记-调优Kafka集群 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.确定调优目标 1>.常见的非功能性要求 一.性能( ...
- kafka生产者和消费者api的简单使用
kafka生产者和消费者api的简单使用 一.背景 二.需要实现的功能 1.生产者实现功能 1.KafkaProducer线程安全的,可以在多线程中使用. 2.消息发送的key和value的序列化 3 ...
- Dubbo性能调优参数及原理
本文是针对 Dubbo 协议调用的调优指导,详细说明常用调优参数的作用域及源码. Dubbo调用模型 常用性能调优参数 参数名 作用范围 默认值 说明 备注 threads provider 200 ...
- kafka生产者和消费者流程
前言 根据源码分析kafka java客户端的生产者和消费者的流程. 基于zookeeper的旧消费者 kafka消费者从消费数据到关闭经历的流程. 由于3个核心线程 基于zookeeper的连接器监 ...
- [Spark][kafka]kafka 生产者,消费者 互动例子
[Spark][kafka]kafka 生产者,消费者 互动例子 # pwd/usr/local/kafka_2.11-0.10.0.1/bin 创建topic:# ./kafka-topics.sh ...
- Spring Cloud 各组件调优参数
Spring Cloud整合了各种组件,每个组件往往还有各种参数.本文来详细探讨Spring Cloud各组件的调优参数. Tomcat配置参数 1 server: 2 tomcat: 3 max-c ...
- Linux TCP/IP调优参数 /proc/sys/net/目录
所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数,后面是它们的含义: /proc/sys/net/core/rmem_default " ...
- hadoop作业调优参数整理及原理
hadoop作业调优参数整理及原理 10/22. 2013 1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并 ...
- JVM性能调优的6大步骤,及关键调优参数详解
JVM性能调优方法和步骤1.监控GC的状态2.生成堆的dump文件3.分析dump文件4.分析结果,判断是否需要优化5.调整GC类型和内存分配6.不断分析和调整JVM调优参数参考 对JVM内存的系统级 ...
- 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...
随机推荐
- u-swipe-action 宽度计算的延迟导致组件加载时内部样式错误
https://toscode.gitee.com/umicro/uView/issues/I1Y50J 左图为电脑显示效果,右图为app显示效果. 原因:u-swipe-action 宽度计算的延迟 ...
- LaTex · overleaf | 使用技巧存档
如何使用 bibtex:http://www.taodudu.cc/news/show-5832925.html?action=onClick bibtex 格式:https://blog.csdn. ...
- 搭建 spring boot + mybatis plus 项目框架并进行调试
本文为博主原创,未经允许不得转载: 1.创建一个spring boot的工程应用: File ---- > New ----->Project ----> 然后选中Spring In ...
- AI毕业设计生成器(基于AI大模型技术开发)
这是一个辅助生成计算机毕业设计的工具,可以自动完成毕业设计的源码.它基于几百个github上面开源的java和python项目,运用tengsorflow技术,训练出了AI大模型.基本实现了计算机毕业 ...
- Linux进阶命令-grep
Linux进阶命令----grep 目录 Linux进阶命令----grep grep 命令介绍 grep命令格式 常用选项 模式部分 匹配字符: 匹配次数: 位置锚定: grep 命令介绍 Linu ...
- P5733 【深基6.例1】自动修正
1.题目介绍 2. 题解 2.1 字符串大小写转换 思路 str[i] -= 'a' -'A'; 注意这里转换方式,即减去偏移量(ASCII码表中,'a'在'A'前面,如果记不得偏移量,就直接写'a' ...
- SpringMVC04——数据处理及跳转
结果跳转 1.ModelAndView 设置ModelAndView对象,根据view的名称,和试图解析器跳到指定的页面. 页面:{视图解析器前缀} + viewName + {视图解析器后缀} &l ...
- SqlSugar DbContext
title: SqlSugar DbContext date: 2023-02-16 20:01:41 tags: SqlSugar categories: ORM description: 总结整理 ...
- [转帖]配置 Windows XP 正常上网(TLS HTTPS),连接到 NAS
https://zhuanlan.zhihu.com/p/208685816# 学习一下. 知乎用户8kqKq9 等 45 人赞同了该文章 Windows XP 是经典的.高效的.可靠的.性能良好的操 ...
- 日常测试进行beans比较的简单方法
日常测试进行beans比较的简单方法 摘要 想每天把有变化的bean抓取出来有新增的beans时能够及时进行分析和介入 保证beans 都是符合规范的. 方式和方法 开启actuator 打开bean ...