Jenkins构建出现内存不足错误

17
我们在 ec2 实例上运行 Jenkins。进行构建时,我们看到以下错误:
17:29:39.149 [INFO] [org.gradle.api.Project] OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000007ac000000, 234881024, 0) failed; error='Cannot allocate memory' (errno=12)
17:29:39.150 [INFO] [org.gradle.api.Project] #

17:29:39.150 [INFO] [org.gradle.api.Project] # There is insufficient memory for the Java Runtime Environment to continue.

17:29:39.150 [INFO] [org.gradle.api.Project] # Native memory allocation (malloc) failed to allocate 234881024 bytes for committing reserved memory.

我在这个话题上进行了研究,并尝试了各种设置,例如增加堆内存、RAM和PermGenSize。这是我在Jenkins上的当前内存设置:

我对此进行了研究,并尝试了不同的设置,如增加堆内存、RAM和 PermGenSize。以下是我在 Jenkins 上的当前内存设置:

-Xms256m -Xmx2048m -XX:MaxPermSize=512m

还有什么其他的东西导致OOM吗?


我怀疑这里的问题不在于Jenkins内存,而在于gradle进程(它在自己的jvm上运行)。尝试增加Gradle的内存(GRADLE_OPTS=-Xmx512m....),然后再测试。 - Eldad Assis
我已经将GRADLE_OPTS设置为-Xmx2048m,但仍然存在内存不足的问题。 - Satya
我对Gradle不是太熟悉...也许它会分叉一个新的JVM,这就是崩溃的原因...另外 - 你有足够的系统内存可用吗? - Eldad Assis
3个回答

31

我遇到了同样的问题。(我有EC2、t2.micro、Ubuntu 14、Jenkins、Tomcat、Maven)。 默认情况下,您没有交换空间。 确认方法如下:

free -m

只需要添加一些。尝试以1GB开始。

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

再次检查:

free -m

更多细节请查看此处


运行得非常顺利!! - CandleCoder

8
这不是JVM内存问题,而是操作系统级别的问题。JVM尝试分配224MB内存,但操作系统上没有这么多可用的内存。当JVM的-Xmx设置大于系统中可用的空闲内存时会出现这种情况。请检查操作系统中可用的空闲内存量,并将当前JVM的内存限制在可用内存范围内,或尝试释放内存(通过限制其他进程使用的内存),或尝试使用具有更多内存的EC2实例。

0

如果您的Jules构建失败,原因是内存不足,请按照以下步骤操作:

  1. 在manifest.yml文件中增加内存大小
    例如:memory:4270 M(在此处增加)
  2. 将MAVEN_OPTS添加到jules.yml文件的config参数中

enter image description here

祝您愉快 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接