【问题标题】:spring boot takes like forever to start up in Openshift在 Openshift 中启动 spring boot 需要很长时间
【发布时间】: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


【解决方案1】:

可能是您没有 maven 代理设置并且正在下载所有依赖项吗?

如果是这种情况,您的日志可能会显示您一遍又一遍地下载相同的依赖。

运行此命令以查看日志:

oc logs _POD_NAME_

另外,您是否在 OpenShift Dev Preview 中尝试过相同的操作并获得了类似的结果?

【讨论】:

  • 感谢您的回复。正如您在上面的日志中看到的,我没有尝试使用 maven 来编译我的应用程序。所以我不认为这与 mvn 代理有关。我还没有机会在 openshift origin 1.4 上对其进行测试。会做的,让您知道,非常感谢您的提醒。
猜你喜欢
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
  • 2014-05-30
  • 2021-09-22
  • 1970-01-01
  • 2013-11-15
相关资源
最近更新 更多