我已经设置了一个在CircleCI (https://hub.docker.com/r/jiteshsojitra/docker-headless-vnc-container)中运行自动化测试的作业,它工作得很好,但在运行测试一个小时后,它达到了内存限制,并且突然终止了正在运行的Java/ant作业。因此,有没有办法增加容器内存,以便测试可以在容器或其付费功能中运行5-6个小时?
我尝试将- JAVA_OPTS: -Xms512m -Xmx1024m
放入YAML脚本中,但容器内存的总大小达到了4 4GB左右。
参考文献:
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
日志跟踪:
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
发布于 2018-03-28 03:53:51
我们遇到了这个问题。It is a limit in CircleCI (or the VM, really)。唯一的解决方案是让你的应用程序使用更少的内存。
发布于 2018-04-18 16:51:39
费斯克本是对的。我认为您提到的容器是我们的consol/docker-headless-vnc-container镜像的一个分支。因此,您可以在启动脚本中添加以下行。
# 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
,例如
docker run -e JVM_HEAP_XMX=512 ...
如果您想要动态确定大小,请查看该脚本jvm_options.sh。
https://stackoverflow.com/questions/49519953
复制相似问题