首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在容器中运行作业一小时后,Java进程因内存不足而被杀死

在容器中运行作业一小时后,Java进程因内存不足而被杀死
EN

Stack Overflow用户
提问于 2018-03-28 02:22:24
回答 2查看 917关注 0票数 0

我已经设置了一个在CircleCI (https://hub.docker.com/r/jiteshsojitra/docker-headless-vnc-container)中运行自动化测试的作业,它工作得很好,但在运行测试一个小时后,它达到了内存限制,并且突然终止了正在运行的Java/ant作业。因此,有没有办法增加容器内存,以便测试可以在容器或其付费功能中运行5-6个小时?

我尝试将- JAVA_OPTS: -Xms512m -Xmx1024m放入YAML脚本中,但容器内存的总大小达到了4 4GB左右。

参考文献:

代码语言:javascript
复制
https://circleci.com/gh/jiteshsojitra/zm-selenium/231
https://circleci.com/api/v1.1/project/github/jiteshsojitra/zm-selenium/231/output/106/0?file=true

日志跟踪:

代码语言:javascript
复制
BUILD FAILED
/headless/zm-selenium/build.xml:348: Java returned: 137

Total time: 76 minutes 26 seconds
Exited with code 137

Hint: Exit code 137 typically means the process is killed because it was running out of memory
Hint: Check if you can optimize the memory usage in your app
Hint: Max memory usage of this container is 4286337024
according to /sys/fs/cgroup/memory/memory.max_usage_in_bytes
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-28 03:53:51

我们遇到了这个问题。It is a limit in CircleCI (or the VM, really)。唯一的解决方案是让你的应用程序使用更少的内存。

票数 2
EN

Stack Overflow用户

发布于 2018-04-18 16:51:39

费斯克本是对的。我认为您提到的容器是我们的consol/docker-headless-vnc-container镜像的一个分支。因此,您可以在启动脚本中添加以下行。

代码语言:javascript
复制
# set correct java startup
export _JAVA_OPTIONS="-Duser.home=$HOME -Xmx${JVM_HEAP_XMX}m"
# add docker jvm flags, can maybe removed with JDK9
export _JAVA_OPTIONS="$_JAVA_OPTIONS -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"

现在,您可以使用JVM应该使用的兆字节数来设置环境变量JVM_HEAP_XMX,例如

代码语言:javascript
复制
docker run -e JVM_HEAP_XMX=512 ... 

如果您想要动态确定大小,请查看该脚本jvm_options.sh

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49519953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档