Kafka版本:3.0.1-Kafka管理客户端重复创建-内存泄漏

jutyujz0  于 2022-09-21  发布在  Kafka
关注(0)|答案(1)|浏览(374)

我们有SpringBoot应用程序,可以从一个主题消费,并产生多个主题的记录。

最近在Gradle项目中相应地将此应用程序升级到Sprint Boot-2.6.7和其他依赖项。

APP可以正确消费和生产,但问题是它似乎重复创建Kafka管理客户端(1000s),似乎是内存泄漏(可能是因为这个?),最终导致示例崩溃,跟不上滞后。

外部库中一些与Kafka相关的依赖JAR

org.apache.kafka:kafka-clients:3.0.1   
   org.springframework.cloud:spring-cloud-stream:3.2.3   
   org.springframework.cloud:spring-cloud-stream-binder-kafka:3.2.3   
   org.springframework.cloud:spring-cloud-stream-binder-kafka-core:3.2.3    
   org.springframework.integration:spring-integration-kafka:5.5.11    
   org.springframework.kafka:spring-kafka:2.8.5

这是有原因的吗?是否缺少配置?

but5z9lq

but5z9lq1#

因此,adminClient不是问题所在。问题出在存储输出通道的哈希图的默认大小10。我已经设置了spring.cloud.stream.dynamic-destination-cache-size=30,,因为我们已经在APP中总共有17个输出目的地。如果这个散列Map的默认大小为10,它会不断地删除和添加要Map的值,重复地“一旦达到这个大小,新的目的地将触发删除旧的目的地”,不时调用GC。

相关问题