只是免责声明,我是一名 IT 人员而不是开发人员,因此我需要比您习惯的更明确的解释...我提前道歉。
我被要求解决 Jenkins
中的一项部署作业的问题。部署作业使用 Chef Recipe 和 Knife 来 .zip
编译的 .wars,然后将 .zip
复制到测试服务器。该作业之前可以正常工作,但项目文件已经变得更大,现在当我们运行该作业时,在运行批处理脚本时无法复制 .zip
文件。
失败并出现错误
ERROR: NoMemoryError: failed to allocate memory
这真的很奇怪,因为我们的 Jenkins 服务器有足够的内存...我在运行作业时检查了利用率,它总共没有超过 4-6GB,并且我们为托管 Jenkins 的虚拟机分配了 24GB。
这似乎是某种人为限制,因为如果我手动构建 .zip
并消除所有导入的库 .dlls
并减小 的大小>zip
到 500mb 以下,效果很好。但我不想弄乱我的开发人员的项目文件以减小大小(当作业构建源代码时,它们都会从 BitBucket 中拉下来......我不知道删除它们可能会产生什么样的下游影响)。
必须有一种方法让它复制大于 500mb 的 .zips
...这是 2017 年,500mb 是一个可怜的限制。
关于如何进一步排除故障有什么想法吗?我应该在 Jenkins 服务器上查看任何特定的日志文件吗?控制台输出是我看到任何东西的唯一地方,所有告诉我的是内存分配错误。
最佳答案
Jenkins 是一个 Java 应用程序,Java 虚拟机可能有自己的内存限制。 您可以将最大堆大小增加到 2GB
java -Xmx2048m ...
java -X
将显示所有可用选项的列表
在redhat系统上,您只需将-Xmx2048m
附加到/etc/sysconfig/jenkins
中的JENKINS_JAVA_OPTIONS
,然后添加systemctl重启 Jenkins
关于java - 使用chef的Jenkins部署项目错误: NoMemoryError: failed to allocate memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46107038/