【发布时间】:2017-09-21 13:01:53
【问题描述】:
构建应用程序后,部署过程开始工作。 SpringBoot (mysql) 应用程序被部署并标记为通常的“启动应用程序”。
几秒钟后,有一条消息说它“杀死”了应用程序。请注意,我刚好在我的 Openshift 免费配额的范围内。
消息是什么? .../wildfly/bin/standalone.sh:第 307 行:183 杀死“java”-D“[Standalone]” 请参阅粗体字。
在另一次我看到应用程序已启动,我什至可以登录,但一分钟后被杀死。
14:47:15,334 INFO [nl.xyz.Application] (ServerService 线程池 -- 66)在 26.49 秒内启动应用程序(JVM 运行时间为 57.227) 14:47:15,723 信息 [javax.enterprise.resource.webcontainer.jsf.config] (ServerService 线程池 -- 66) 初始化 Mojarra 2.2.13.SP1 20160303-1204 for context '' /wildfly/bin/standalone.sh:第 307 行:183 杀死“java”-D“[Standalone]” -server -XX:+UseParallelGC -Xms40m -Xmx250m -XX:+AggressiveOpts -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dorg.apache.tomcat.util.LOW_MEMORY=true -DOPENSHIFT_APP_UUID= -Djboss.modules .system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.resolver.warning=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Djboss.node.name =solvedcaches-5-80fj7 -Djgroups.bind_addr=0.0.0.0 -Dorg.apache.coyote.http11.Http11Protocol.COMPRESSION=on "-Dorg.jboss.boot.log.file=/wildfly/standalone/log/server.log " “-Dlogging.configuration=file:/wildfly/standalone/configuration/logging.properties” -jar "/wildfly/jboss-modules.jar" -mp "/wildfly/provided_modules:/wildfly/modules" org.jboss.as.standalone -Djboss.home.dir="/wildfly" -Djboss.server.base.dir="/wildfly/standalone" '-b' '0.0.0.0' '-bmanagement' '0.0.0.0'
由于一般构建失败,最后 2 个构建失败。奇怪的是,代码几乎没有改变。看起来重建会占用内存并与正在运行的应用程序竞争,反之亦然。上次我停止 POD,然后部署就可以了。
【问题讨论】:
-
请查杀原因。我认为是 Kubernetes 杀死了应用程序,因为它使用的内存超出了允许的范围。所以用
oc describe <pod>检查重启原因。您也可以提供更多内存来测试。第二个问题可能是健康检查,它检查得太早并杀死了应用程序 -> 但这在事件中也可见(Openshift Online Web Console -> Monitoring -> Monitoring and Events) -
我尽量减少了应用。我在后续日志中看到构建以 Success 完成。当我查看监视器时,我看到构建失败“通用构建失败运行了 55 秒”。使用“oc get pods”,我看到它是“OOMKilled”。所以我什至不能做“oc describe ...”。我能做些什么?该应用程序已经是“皮肤和骨骼”。我可以更改内存设置吗?
-
如果默认限制 (
oc describe limits resource-limits) 不够,您可以在 部署配置 中调整应用程序的内存限制。但是,正如您指出的那样,您只是在配额限制内(OpenShift Online 免费入门计划),您需要首先减少 MySQL 部署配置的内存限制。构建过程使用terminating resources quota,并且默认限制为每个容器相同的 512 MiB,如果未在 构建配置 中另行指定。 -
@Jiri Fiala,请将您的评论作为答案。播放两个 POD 的内存设置后,应用程序变得更加稳定。您能否建议 MySql 的良好内存资源设置是什么?然后我可以给应用程序更多的空间和稳定性。
标签: openshift