只是一个免责声明,我是一个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服务器上查看任何特定的日志文件?控制台输出是我看到的唯一的地方,所有这些都告诉我内存分配错误。
答案 0 :(得分:1)
Jenkins是一个Java应用程序,Java虚拟机可能有自己的内存限制。 您可以使用
将最大堆大小增加到2GBjava -Xmx2048m ...
java -X
将显示所有可用选项的列表
在redhat系统上,您只需将-Xmx2048m
添加到JENKINS_JAVA_OPTIONS
中的/etc/sysconfig/jenkins
,然后systemctl restart jenkins