参数配置

创建 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)。

操作步骤

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.ms168
log.roll.hoursint新日志段滚动的最大时间(小时),优先级低于 log.roll.ms168[1,...]
log.roll.jitter.hoursint从 logRollTimeMillis 中减去的最大抖动时间(小时),优先级低于 log.roll.jitter.ms0[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每次抓取响应的最小字节数。若不足,则等待最多 replicaMaxWaitTimeMs1
replica.fetch.wait.max.msint从节点发起抓取请求的最大等待时间。该值应始终小于 replica.lag.time.max.ms,以防低吞吐量主题频繁缩减 ISR500
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.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

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