我在spring boot中有一个微服务,它部署在ECS中具有corretto 11的容器中。
该组件部署512MB,初始消耗接近50%,随着流量增加,内存增加,始终不能释放,导致ECS中的任务崩溃,必须重新启动。
下图显示了内存在一段时间内的行为,随着通信量的增加,ECS中的任务开始工作的时间越短。
Memory Consumption in a Container on AWS ECS
Spring Boot版本: 2.4.3 JDK镜像: Corretto 11
更新:
我做了一个分析器和堆转储的分析,我发现spring库中的使用量很高。
发布于 2021-03-21 04:12:50
根据屏幕截图,问题似乎出在DefaultListableBeanFactory对象中。
请检查您的代码,并确保您没有为每个请求实例化spring bean。如果是这样的话,你只需要静态地自动连接它们一次。
例如,检查以下解决方案:Memory leak in jboss service due to DefaultListableBeanFactory objects
以下是关于可序列化bean工厂管理中为什么会有内存泄漏的解释:
附注:我不认为Spring框架本身存在bug,但如果有,请将Spring Boot升级到最新版本。也许你的版本包含一些bug,这会导致内存泄漏。
在这个报告的问题中查看详细信息:https://github.com/spring-projects/spring-framework/issues/25619
https://stackoverflow.com/questions/66723748
复制相似问题