主页>技术知识>详情

kafka消费者内存一直上涨

villain/2022-02-23/108阅读 /0评论
kafka消费者内存一直上涨简介:spring-kafka 版本:1.3.4.RELEASE 消费者三台机器(每台内存不到8G),消费10几个topic,每个topic 3个分区 为什么内存一直上升,不释放解决方法:[标签:标

kafka消费者内存一直上涨

spring-kafka    版本:1.3.4.RELEASE

消费者三台机器(每台内存不到8G),消费10几个topic,每个topic 3个分区

为什么内存一直上升,不释放


解决方法:

遇到这种情况难道不应该用jmap,jstat等工具进行分析么?


回复 @Allen吴 : 内存猛增的最后结果是啥,OOM ?
回复 @Allen吴 : 多大流量啊,几台机器消费啊
回复 @Allen吴 : 看是full gc还是young gc。young gc的话通过扩内存,扩展消费并行度,即多加几个机器一起消费来解决,full gc多说明有大对象,或内存泄漏,对了,KafkaConsumer不正常close会内存泄漏
分析了,感觉是内存释放跟不上消费的速度

大多数这种情况,都是自己业务代码有坑


代码中也在不断的把一些大对象设置为null,还是稳步上升

发的太猛了吧,我之前也遇到过,改了过期时间,设置得很小了,内存还是一直不断向上增长,后来放弃了这个,使用其他方案


回复 @Allen吴 : 之前我做的是视频分析,一个解码一个进行推理,解码的速度基本上是每秒25帧左右,我把每一帧图像进行发布,推理这一端订阅接受,初步判断是接受不过来,解码停了二十几秒,这边还在接受,后来我没有尝试了,直接把解码和推理合并在一个项目里面了,另外有一个朋友尝试用redis好像据说也可以订阅发布,但是也有相同的问题,如果不是非要使用分布式没得必要使用像kafka和redis这样的东西
topic里都是业务线的一些异常日志,很多都是堆栈异常信息,是不是内存的释放赶不上消费的速度,是否有必要扩大分区,增加消费者,内存是否要加。还有你使用了其他什么方案。

引用来自“纳兰清风”的评论

遇到这种情况难道不应该用jmap,jstat等工具进行分析么?


感觉还好啊,也没有full gc,ygc也没有很高,很健康的jvm状态。

一些push类型的MQ,都有prefetch特性,就是broker会多push一些msg给consumer,来提高吞吐量,这些在consumer端还没来得及处理的msg就占用consumer的内存。

但Kafka是pull类型的MQ,你看看会不会是类似的问题,kakfa为了提高吞吐量有没有相关设置。

本文用户投稿或网站收集转载,如有侵权请联系本站。