关于kafka消费缓慢,内存以及cpu 吃尽的问题,像kafka消费内存溢出问题 ,最近在做kafka消费优化,所以特地来记录下
环境记录 :spring boot项目集成kafka 注解监听消费
- 项目启动 kafka消费监听启动中 内存溢出
- kafka消费到一定数量的时候内存溢出
- 消费越来越慢问题
以上问题 需要注意 以下4个值
- 项目启动,分配给项目的最大内存设置
- 批量并发消费者数量(factory.setConcurrency(concurrency))
- kafka消费每批次处理的数量 (ConsumerConfig.MAX_POLL_RECORDS_CONFIG )
- 客户端将缓冲消息所占内存的最大值(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG)
第4点 个人理解为 程序从kafka集群 拉取下来的数据最大值 单位BYTES ,
个人理解: kafka消费数据流程 项目先将数据从集群将数据项拉取到本地内存,然后提供给消费监听来消费,所以设置项目启动内存限制的时候 一定要供大于求 ,才不会导致oom 的悲剧 .