CentOS 上 Kafka 消费者性能优化指南
一 核心参数与推荐值
| 参数 | 作用 | 推荐值或原则 |
|---|---|---|
| max.poll.records | 单次 poll 最大记录数 | 处理快(<10ms)可 500–1000;处理慢(>50ms)建议 100–200,避免超过 max.poll.interval.ms |
| max.poll.interval.ms | 两次 poll 最大间隔 | 默认 300000ms(5分钟);若批处理耗时 T,需满足 T < 该值;重批处理/大事务可适当上调 |
| session.timeout.ms / heartbeat.interval.ms | 会话超时与心跳 | 建议 session.timeout.ms=30000ms,heartbeat.interval.ms=10000ms(约为 1/3),网络抖动或 GC 较长时可适度放宽 |
| fetch.min.bytes / fetch.max.wait.ms | 拉取合并与延迟 | 低延迟:fetch.min.bytes=10240(10KB)、fetch.max.wait.ms=100ms;高吞吐:fetch.min.bytes=1048576(1MB)、fetch.max.wait.ms=5000ms |
| fetch.max.bytes / max.partition.fetch.bytes | 单次拉取字节上限 | 例如 fetch.max.bytes=52428800(50MB);同时关注 max.partition.fetch.bytes(默认 1MB),避免单分区过大导致处理阻塞 |
| enable.auto.commit / auto.commit.interval.ms | 位点提交策略 | 关键业务建议 enable.auto.commit=false,在业务处理完成后 同步提交(commitSync);自动提交仅适合允许重复/弱一致的场景 |
| partition.assignment.strategy | 分区分配策略 | 建议使用 CooperativeStickyAssignor(合作粘性),在重平衡时减少分区迁移与停顿 |
| group.instance.id | 静态成员资格 | 长生命周期实例设置该 ID,可显著降低因短暂离线触发的重平衡 |
| receive.buffer.bytes | Socket 接收缓冲 | 千兆/万兆网络建议 65536–131072 字节,配合系统内核网络参数优化 |
二 并发模型与位点提交
三 操作系统与网络优化(CentOS)
四 快速诊断与监控
五 典型场景与参数建议