java - 使用chef的Jenkins部署项目错误: NoMemoryError: failed to allocate memory

标签 java jenkins chef-infra

只是免责声明,我是一名 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/

相关文章:

macos - 不同 HTTP 端口上的多个 Jenkins 守护进程 (Mac OS X)

hadoop - 如何在Test Kitchen Chef中使用群集节点我需要与 Chef 一起在测试厨房中安装hadoop群集进行测试

chef-infra - 未找到 Recipe : Chef Solo

ubuntu - 使用 Chef 在 Ubuntu 中安装 ffmpeg 因 yasm 版本错误而失败

java - 将 Java 音频流式传输到 icecast/shoutcast 服务器?管道和标准输入?

java - 如何避免通过 iText7 阅读复杂的 PDF 时内存不足?

Jenkins 电子邮件通知 "failed to connect, no password specified"

java - Java 有什么好的多方法实现吗?

java - 由于相同的 bean,应用程序无法启动

jenkins - 使用 groovy 解析 Jenkin 的 shell 脚本中的 JSON 对象