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