Linux Kafka 性能瓶颈排查与解决
一 快速定位瓶颈
二 常见瓶颈与对应解决
三 关键参数与推荐起点
| 维度 | 关键参数 | 推荐起点/说明 |
|---|---|---|
| 生产者吞吐 | batch.size、linger.ms、compression.type、acks、retries | 批量与 linger 提升吞吐;压缩降低网络/磁盘;强一致用 acks=all + min.insync.replicas≥2;开启重试与退避。 |
| 消费者吞吐 | max.poll.records、fetch.min.bytes、fetch.max.wait.ms | 批量拉取与合理等待,权衡延迟与吞吐;配合异步批处理与有界线程池。 |
| 并发度 | num.partitions | 并行度上限≈分区数;扩容分区需评估顺序性与重平衡影响。 |
| 网络 | socket.send.buffer.bytes、socket.receive.buffer.bytes、tcp_nodelay | 适当增大缓冲区;开启 tcp_nodelay 降低 Nagle 延迟。 |
| 磁盘/OS | vm.swappiness、vm.dirty_background_ratio、vm.dirty_ratio、Page Cache | 减少 swap;脏页阈值适度,避免抖动;依赖 Page Cache 提升顺序写性能。 |
| 文件句柄 | nofile(limits.conf / systemd LimitNOFILE) | 生产建议 ≥ 65536,防止 “Too many open files”。 |
| 稳定性 | session.timeout.ms、max.poll.interval.ms、partition.assignment.strategy | 保障心跳与处理时长;必要时用 RoundRobinAssignor 改善负载均衡。 |
四 Linux 系统层优化要点
五 应急与长期治理