参数配置

创建 Kafka 实例时,默认使用系统参数模板,也可以在参数模板中自定义配置。

注意事项
  1. 升级 Kafka 版本后,如有需要删除、废弃或修改的参数,请参考 Kafka 官方网站 上的对应变更。
  2. 为保证 Kafka 环境的稳定运行,部分参数及参数前缀不支持配置(例如,advertised. authorizer. broker. controller cruise.control.metrics.reporter.bootstrap. cruise.control.metrics.topic host.name inter.broker.listener.name listener. listeners. log.dir password. port process.roles sasl. security. servers,node.id ssl. super.user zookeeper.clientCnxnSocket zookeeper.connect zookeeper.set.acl zookeeper.ssl)。

目录

操作步骤

CLI
Web 控制台
# 更新实例配置
kubectl -n <namespace> patch rdskafka <name> --type=merge --patch='{"spec": {"config": {"auto.create.topics.enable":"true"}}}'

参数支持说明

参数类型说明默认值可选值
auto.create.topics.enableboolean是否启用服务器端自动创建主题true
auto.leader.rebalance.enableboolean是否启用自动 leader 负载均衡。后台线程会定期检查分区 leader 分布,检查间隔可通过 leader.imbalance.check.interval.seconds 配置。如果 leader 失衡超过 leader.imbalance.per.broker.percentage,则触发分区 leader 重新平衡至首选 leader。true
background.threadsint用于各种后台处理任务的线程数10[1,...]
compression.typestring指定主题的最终压缩类型。支持标准压缩编码('gzip','snappy','lz4','zstd'),还支持 'uncompressed'(无压缩)和 'producer'(保留生产者设置的压缩编码)。producer
delete.topic.enableboolean是否启用删除主题功能。如果关闭此配置,通过管理工具删除主题将无效。true
leader.imbalance.check.interval.secondslong控制器触发分区重新平衡检查的频率(秒)300
leader.imbalance.per.broker.percentageint每个 broker 允许的 leader 失衡比例,超过该比例时控制器会触发 leader 负载均衡,单位为百分比。10
log.flush.interval.messageslong在日志分区上累积的消息数,达到后将刷新到磁盘9223372036854775807[1,...]
log.flush.offset.checkpoint.interval.msint更新持久化的最后刷新记录(作为日志恢复点)的频率(毫秒)60000[0,...]
log.flush.scheduler.interval.mslong日志刷新器检查是否需要刷新日志到磁盘的频率(毫秒)9223372036854775807
log.flush.start.offset.checkpoint.interval.msint更新持久化的日志起始偏移量记录的频率(毫秒)60000[0,...]
log.retention.byteslong日志最大大小,超过后删除-1
log.retention.hoursint保留日志文件的小时数,超过后删除(单位小时),次于 log.retention.ms 配置168
log.roll.hoursint新日志段滚动的最大时间(单位小时),次于 log.roll.ms 配置168[1,...]
log.roll.jitter.hoursint从 logRollTimeMillis 中减去的最大抖动时间(单位小时),次于 log.roll.jitter.ms 配置0[0,...]
log.segment.bytesint单个日志文件的最大大小1073741824[14,...]
log.segment.delete.delay.mslong从文件系统删除文件前的等待时间60000[0,...]
message.max.bytesintKafka 允许的最大记录批大小(启用压缩时为压缩后大小)。如果增加此值,且存在低于 0.10.2 版本的消费者,需同步增加消费者的 fetch 大小以获取如此大的批次。最新消息格式版本中,记录总是以批次形式存在以提高效率。旧版本中,未压缩记录不分批,此限制仅适用于单条记录。该配置可通过主题级 max.message.bytes 设置。1048588[0,...]
min.insync.replicasint当生产者设置 acks 为 "all"(或 "-1")时,指定必须确认写入的最小副本数,低于该数时生产者会抛出异常(NotEnoughReplicas 或 NotEnoughReplicasAfterAppend)。结合使用 min.insync.replicas 和 acks 可实现更高的持久性保证。典型场景为创建副本因子为 3 的主题,设置 min.insync.replicas 为 2,生产时 acks 为 "all",确保多数副本未写入时生产者抛异常。1[1,...]
num.io.threadsint服务器用于处理请求(包括磁盘 I/O)的线程数8[1,...]
num.network.threadsint服务器用于接收网络请求和发送响应的线程数3[1,...]
num.recovery.threads.per.data.dirint启动时用于日志恢复和关闭时刷新每个数据目录的线程数1[1,...]
num.replica.fetchersint用于从源 broker 复制消息的抓取线程数。增加该值可提升从节点的 I/O 并行度。1
offset.metadata.max.bytesint与偏移量提交关联的元数据条目的最大大小4096
offsets.commit.required.acksshort提交前所需的确认数。一般不建议覆盖默认值 (-1)-1
offsets.commit.timeout.msint偏移量提交会延迟,直到所有副本接收到提交或达到此超时。类似于生产者请求超时。5000[1,...]
offsets.load.buffer.sizeint加载偏移量到缓存时,从偏移量段读取的批量大小(软限制,记录过大时覆盖)。5242880[1,...]
offsets.retention.check.interval.mslong检查过期偏移量的频率600000[1,...]
offsets.retention.minutesint消费者组失去所有消费者(即为空)后,偏移量保留的分钟数,过期后丢弃。对于独立消费者(手动分配),偏移量在最后提交时间加此保留期后过期。10080[1,...]
offsets.topic.compression.codecint偏移量主题的压缩编码,压缩可实现“原子”提交0
offsets.topic.num.partitionsint偏移量提交主题的分区数(部署后不应更改)50[1,...]
offsets.topic.replication.factorshort偏移量主题的副本因子(设置较高以确保可用性)。集群规模未满足此副本因子要求时,内部主题创建会失败。3[1,...]
offsets.topic.segment.bytesint偏移量主题段大小应保持较小,以便更快的日志压缩和缓存加载104857600[1,...]
queued.max.requestsint数据平面允许的排队请求数,超过后阻塞网络线程500[1,...]
quota.consumer.defaultlong已废弃:仅在未配置动态默认配额或 Zookeeper 中使用。任何由 clientId/消费者组区分的消费者,如果每秒获取字节数超过此值,将被限流。9223372036854775807[1,...]
quota.producer.defaultlong已废弃:仅在未配置动态默认配额或 Zookeeper 中使用。任何由 clientId 区分的生产者,如果每秒生产字节数超过此值,将被限流。9223372036854775807[1,...]
replica.fetch.min.bytesint每次抓取响应期望的最小字节数。不足时等待最多 replicaMaxWaitTimeMs。1
replica.fetch.wait.max.msint从节点抓取请求的最大等待时间。该值应始终小于 replica.lag.time.max.ms,以防低吞吐量主题频繁缩减 ISR。500
replica.high.watermark.checkpoint.interval.mslong高水位标记保存到磁盘的频率5000
replica.lag.time.max.mslong如果从节点在此时间内未发送抓取请求或未消费至 leader 的日志末尾偏移量,leader 会将其从 ISR 中移除。30000
replica.socket.receive.buffer.bytesint网络请求的 socket 接收缓冲区大小65536
replica.socket.timeout.msint网络请求的 socket 超时时间,值应至少大于 replica.fetch.wait.max.ms30000
request.timeout.msint控制客户端等待请求响应的最长时间。超时未收到响应时,客户端会根据需要重发请求或在重试耗尽后失败。30000
socket.receive.buffer.bytesint服务器 socket 的 SO_RCVBUF 缓冲区大小。若为 -1,使用操作系统默认值。102400
socket.request.max.bytesintsocket 请求的最大字节数104857600[1,...]
socket.send.buffer.bytesint服务器 socket 的 SO_SNDBUF 缓冲区大小。若为 -1,使用操作系统默认值。102400
transaction.max.timeout.msint事务允许的最大超时时间。若客户端请求的事务时间超过此值,broker 会在 InitProducerIdRequest 返回错误,防止超时过长导致消费者阻塞。900000[1,...]
transaction.state.log.load.buffer.sizeint加载生产者 ID 和事务到缓存时,从事务日志段读取的批量大小(软限制,记录过大时覆盖)。5242880[1,...]
transaction.state.log.min.isrint事务主题覆盖的 min.insync.replicas 配置。2[1,...]
transaction.state.log.num.partitionsint事务主题的分区数(部署后不应更改)。50[1,...]
transaction.state.log.replication.factorshort事务主题的副本因子(设置较高以确保可用性)。集群规模未满足此副本因子要求时,内部主题创建会失败。3[1,...]
transaction.state.log.segment.bytesint事务主题段大小应保持较小,以便更快的日志压缩和缓存加载104857600[1,...]
transactional.id.expiration.msint事务协调器在未收到当前事务状态更新前等待的最大时间(毫秒),超过后过期事务 ID。该设置也影响生产者 ID 过期——生产者 ID 在最后一次写入后超过此时间即过期。注意,若主题保留策略删除了最后一次写入,生产者 ID 可能更早过期。604800000[1,...]
unclean.leader.election.enableboolean是否允许非 ISR 集合中的副本作为最后手段被选举为 leader,尽管这样可能导致数据丢失。false
zookeeper.max.in.flight.requestsint客户端发送给 Zookeeper 的最大未确认请求数,超过后阻塞。10[1,...]
zookeeper.session.timeout.msintZookeeper 会话超时时间18000

更多参数支持,请访问 Kafka 网站