AWS ECS Fargate中Spring WebFlux Java11微服务内存居高不下求助
AWS ECS Fargate部署Spring WebFlux Java 11微服务内存异常问题求助
我们在AWS ECS Fargate上部署基于gcr.io/distroless/java:11镜像的Spring WebFlux Java 11微服务时,遇到以下内存异常问题:
- 本地Docker部署时内存利用率高效,堆使用率从未超过50%;但Fargate部署相同镜像后,AWS控制台显示内存利用率持续居高不下,CloudWatch日志中无OutOfMemory错误
- 完成峰值测试、压力测试后内存利用率达94%,后续6小时soak测试仍维持94%,垃圾回收持续运行但内存未出现下降
已执行的排查及优化动作:
- 本地使用Visual VM测试内存利用率,通过Amazon ECS Exec连接到远程ECS任务分析GC日志,发现服务默认使用Simple GC,频繁出现
Pause Young Allocation Failure(新生代内存不足导致GC失败) - 修改byteArray内存重复拷贝的代码后,内存略有下降但效果有限
- 手动执行Full GC后,堆内内存显示下降,但执行
ps -o pid,rss命令的输出及AWS Container Insights图表均未体现内存降低 - 我们其他集群的微服务也存在相同问题,恳请有相关经验者提供帮助
GC日志示例
[2022-10-09T13:33:45.401+0000][1120.447s][info][gc] GC(1417) Pause Full (Allocation Failure) 793M->196M(1093M) 410.170ms [2022-10-09T13:33:45.403+0000][1120.449s][info][gc] GC(1416) Pause Young (Allocation Failure) 1052M->196M(1067M) 460.286ms
ps命令输出示例
/app # ps -o pid,rss PID RSS 1 1.4g 16 16m 30 27m 515 23m 524 688 1655 4 /app # ps -o pid,rss PID RSS 1 1.4g 16 15m 30 27m 515 22m 524 688 1710 4
内容的提问来源于stack exchange,提问作者Amol Kshirsagar
相关产品推荐
相关产品推荐

