我们有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
这是有原因的吗?是否缺少配置?
1条答案
按热度按时间but5z9lq1#
因此,adminClient不是问题所在。问题出在存储输出通道的哈希图的默认大小10。我已经设置了spring.cloud.stream.dynamic-destination-cache-size=30,,因为我们已经在APP中总共有17个输出目的地。如果这个散列Map的默认大小为10,它会不断地删除和添加要Map的值,重复地“一旦达到这个大小,新的目的地将触发删除旧的目的地”,不时调用GC。