参数配置

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

注意事项
  1. 升级 Kafka 版本后,如有需要删除、废弃或修改的参数,请参考 官方 Kafka 网站 上的相应变更。
  2. 为确保 Kafka 环境的稳定运行,部分参数及参数前缀不支持配置(例如 advertised.authorizer.broker.controllercruise.control.metrics.reporter.bootstrap.cruise.control.metrics.topichost.nameinter.broker.listener.namelistener.listeners.log.dirpassword.portprocess.rolessasl.security.servers,node.idssl.super.userzookeeper.clientCnxnSocketzookeeper.connectzookeeper.set.aclzookeeper.ssl)。

目录

操作步骤

CLI
Web Console
# 更新实例配置
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)。结合 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与 offset 提交关联的元数据条目的最大大小4096
offsets.commit.required.acksshort提交被接受前所需的确认数。一般不建议覆盖默认值(-1)。-1
offsets.commit.timeout.msintoffset 提交会延迟,直到所有 offset 主题的副本收到提交或达到该超时时间。类似于生产者请求超时。5000[1,...]
offsets.load.buffer.sizeint加载 offset 到缓存时,从 offset 段读取的批量大小(软限制,若记录过大则覆盖)。5242880[1,...]
offsets.retention.check.interval.mslong检查过期 offset 的频率600000[1,...]
offsets.retention.minutesint消费者组失去所有消费者(即为空)后,offset 保留的分钟数,过期后被丢弃。对于独立消费者(手动分配),offset 会在最后一次提交时间加该保留期后过期。10080[1,...]
offsets.topic.compression.codecintoffset 主题的压缩编码,用于实现“原子”提交0
offsets.topic.num.partitionsintoffset 提交主题的分区数(部署后不应更改)50[1,...]
offsets.topic.replication.factorshortoffset 主题的副本因子(设置较高以确保可用性)。集群规模未达到该副本因子时,内部主题创建会失败。3[1,...]
offsets.topic.segment.bytesintoffset 主题的段大小应保持较小,以加快日志压缩和缓存加载速度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.ms。30000
request.timeout.msint控制客户端等待请求响应的最长时间。超时后,客户端会根据需要重发请求或在重试耗尽时失败。30000
socket.receive.buffer.bytesintsocket 服务器套接字的 SO_RCVBUF 缓冲区大小。若为 -1,则使用操作系统默认值。102400
socket.request.max.bytesintsocket 请求的最大字节数104857600[1,...]
socket.send.buffer.bytesintsocket 服务器套接字的 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 的最后写入因主题保留策略被删除,生产者 ID 可能更早过期。604800000[1,...]
unclean.leader.election.enableboolean是否允许非 ISR 集合中的副本作为最后手段被选举为 leader,尽管这样可能导致数据丢失。false
zookeeper.max.in.flight.requestsint客户端发送给 Zookeeper 的最大未确认请求数,超过则阻塞。10[1,...]
zookeeper.session.timeout.msintZookeeper 会话超时时间18000

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