Kafka 消息大小设置指南
一、关键参数与生效范围
| 配置项 | 默认值 | 生效范围 | 作用要点 |
|---|---|---|---|
| message.max.bytes | 1,000,000 B(约 1 MB) | Broker 全局 | 限制 Broker 能接受的单个“记录批次”的最大字节数(新版消息格式下,记录总是按批次传输)。可在 Topic 级别用 max.message.bytes 覆盖。 |
| max.message.bytes | 继承 broker 的 message.max.bytes | Topic 级别 | 指定某 Topic 允许的最大消息(批次)大小,优先级高于全局。 |
| replica.fetch.max.bytes | 1,048,576 B(1 MB) | Broker 全局 | Follower 从 Leader 拉取时,每个分区尝试获取的最大字节数。为让大消息正常复制,通常需 ≥ 对应 Topic 的 max.message.bytes。 |
| max.request.size | 1,048,576 B(1 MB) | Producer | 单个 Produce 请求允许的最大字节数。应 ≤ Topic/Broker 允许的最大批次大小。 |
| fetch.max.bytes | 50 MB | Consumer | 单次 Consumer Fetch 请求的总上限。 |
| max.partition.fetch.bytes | 1 MB | Consumer | 单次 Fetch 请求中,每个分区允许的最大字节数。需 ≥ Topic/Broker 允许的最大批次大小。 |
二、配置步骤与示例
三、常见错误与排查
生产端报错:org.apache.kafka.common.errors.RecordTooLargeException
消费端卡住或拉取不到大消息
副本复制失败或异常
四、实践建议
尽量保留 Broker 全局默认值(1 MB),仅在需要的大消息 Topic 上用 max.message.bytes 动态覆盖,降低集群风险。
合理设置上限:大消息会占用更多网络与磁盘 I/O,且可能影响吞吐与复制延迟;建议结合业务与监控,设置适度上限并配合压缩。
版本差异与命名
容量规划
替代方案