【发布时间】:2018-04-09 13:02:53
【问题描述】:
我有一些 Docker 容器 在 AWS EC2 实例上运行。容器正在运行 Java Spring Boot 应用程序。间歇性地,(到目前为止每隔几周),Docker 似乎内存不足。有时,我什至无法通过 SSH 连接回实例。
我已尝试查看每个容器中的应用程序日志文件,以了解是哪个容器导致了问题,但我找不到任何与内存相关的错误。在 Docker 日志文件中,我只能看到错误提示:
当错误发生时,docker-containerd 无法分配内存。
如何进一步解决此问题?
【问题讨论】:
-
您是否正确地将 JVM 限制为 Docker 容器的内存限制?
-
我在运行时没有任何内存限制,但我读到的越多,我想我也需要。
-
这意味着您的 JVM 取决于 JVM 的版本将获取 docker 主机的内存限制,而不是错误的 docker 容器的内存限制......请参阅blogs.oracle.com/developers/… ...所以你需要设置合适的 JVM 参数来限制内存到 Docker 容器的限制。这样做会让你有机会在本地测试容器并观察 JVM 信息(Spring Boot 有指标等/内存信息;所以你也错过了监控 docker 容器内的 JVM)
标签: spring-boot docker amazon-ec2