使用厨师ERROR的Jenkins部署项目:NoMemoryError:无法分配内存

时间:2017-09-08 00:48:13

标签: java jenkins chef

只是一个免责声明,我是一个IT人员而不是开发人员所以我需要比你习惯的更明确的解释......我提前道歉。

我被要求修复Jenkins中某个部署作业的问题。部署作业使用厨师食谱和刀来.zip编译的.wars,然后将.zip复制到测试服务器。该工作以前工作但项目文件已经变得更大,现在当我们运行作业时,它无法在运行批处理脚本时复制.zip文件。

失败并显示错误

ERROR: NoMemoryError: failed to allocate memory

这真的很奇怪,因为我们的Jenkins服务器有很多ram ...我在运行作业时检查了利用率,它总共没有超过4-6GB,我们有24gb分配给托管Jenkins的虚拟机。

这似乎是某种人为限制,因为如果我手动构建.zip并删除所有导入的库.dlls并将zip的大小减小到500mb以下就可以了精细。但我宁愿不要弄乱我的开发人员的项目文件来减小大小(当作业构建源时,它们都会从BitBucket中被拉下来......我不知道它可能只需要删除它们会产生什么样的下游影响)。

必须有一种方法可以复制大于500mb的.zips ......这是2017年,500mb是一个可怜的限制。

有关如何进一步排除故障的任何想法?我应该在Jenkins服务器上查看任何特定的日志文件?控制台输出是我看到的唯一的地方,所有这些都告诉我内存分配错误。

1 个答案:

答案 0 :(得分:1)

Jenkins是一个Java应用程序,Java虚拟机可能有自己的内存限制。 您可以使用

将最大堆大小增加到2GB
java -Xmx2048m ...

java -X将显示所有可用选项的列表

在redhat系统上,您只需将-Xmx2048m添加到JENKINS_JAVA_OPTIONS中的/etc/sysconfig/jenkins,然后systemctl restart jenkins