首页/数据/数据工程与 ETL 速查/生产者批处理 linger.ms 与 batch.size
本包目录(311 条)
管道基础52 条
Kafka64 条
调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

生产者批处理 linger.ms 与 batch.size

生产者把小消息合并成批发送以提升吞吐:linger.ms 控制等待时间、batch.size 控制单批字节上限;等待越久批次越大,延迟也越高。

linger.ms批次等待时间,默认 0(有记录即发)
batch.size单分区单批字节数上限,默认 16KB
buffer.memory生产者总缓冲,默认 32MB,写满会阻塞或抛异常

吞吐优先配置示例

吞吐优先配置示例
linger.ms=20
batch.size=65536
compression.type=lz4
buffer.memory=67108864
缓冲区不足时 send() 会阻塞到 max.block.ms 超时,异常信息是 TimeoutException: Failed to allocate memory。

易错点

  • linger.ms 调大多会让端到端延迟上升,实时链路要权衡
  • 单条消息超过 max.request.size(或 broker 的 message.max.bytes)会直接发送失败

数据来源与参考

  • Apache Kafka 官方文档:Producer Configs 与 Design(Batching)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌