【发布时间】:2017-05-26 03:18:46
【问题描述】:
我在 openshift origin 1.3 中运行 spring boot 1.4.3 应用程序。
带spring bootup需要20多分钟。
我使用的 docker 基础容器是 alpine:3.4 with opendk8-jre。
spring boot 嵌入式容器使用默认的 tomcat 之一。我已经安装了 haveged 并设置了 -Djava.security.egd=file:/dev/./urandom
但如果我使用 docker run 运行映像本身(我没有使用 openshift),它可以启动..
知道为什么吗?
【问题讨论】:
-
你能把你的 Spring boot 应用程序的日志发布在 Docker 容器中启动吗?如果我们查看时间戳,也许我们可以解决问题所在。
-
请在pastebin.com/G55Vh5j6找到日志,从日志中可以找到,启动需要超过300秒。有时需要超过 10 分钟。
-
您的应用程序通常需要多少内存?在某些情况下,OpenShift 会设置内存和 CPU 的上限,因此如果您面临内存压力,您的应用可能无法启动。
-
另外,验证容器中的 DNS 是否正在解析 - 有时长时间的停顿可能是由于在您的主机上设置了无效的 DNS 名称服务器,因为应用程序库可能会挂起等待名称解析。跨度>
-
感谢克莱顿的提醒。我在 OpenShift 中设置的内存是 512Mi,我认为这对于普通的 spring boot 或 java 应用程序来说已经足够了。但事实证明我错了。当我将内存增加到 1G 时,我的应用程序启动很快。是否有任何提示/技巧/魔术可以用来调整我的应用程序?
标签: spring spring-boot openshift openshift-origin