首页 > 解决方案 > 解除工作人员 RAM 内存限制

问题描述

我正在尝试在 jenkins 中调整构建作业,问题是,由于内存不足,它一直失败,我已经调整了 java xmx,但它没有解决问题。

事实证明,我在工作人员中有 RAM 内存限制,我尝试将这些命令作为构建脚本的一部分运行:“free -m”和“cat /proc/meminfo”,他们都确认作业正在以 1GB RAM 限制运行,服务器有更多,但构建没有使用它,并且由于内存不足而不断失败。

请帮我解决这个问题,我怎样才能解除这个限制?谢谢你

标签: jenkinsjenkins-pipeline

解决方案


堆还是 Permgen?人们通常会遇到两个 OutOfMemoryErrors。第一个和堆空间有关:java.lang.OutOfMemoryError: Heap space 看到这个,需要增加最大堆空间。您可以通过将以下内容添加到您的 JVM 参数 -Xmx200m 来执行此操作,其中您将数字 200 替换为新的堆大小(以兆字节为单位)。

第二个和PermGen有关:java.lang.OutOfMemoryError: PermGen space。当您看到这一点时,您需要增加最大永久代空间,该空间用于类文件和实习字符串等内容。您可以通过将以下内容添加到您的 JVM 参数 -XX:MaxPermSize=128m 来执行此操作,其中将数字 128 替换为新的 PermGen 大小(以兆字节为单位)。

另请注意:Master 的内存要求 Jenkins 所需的内存量在很大程度上取决于许多因素,这就是为什么分配给它的 RAM 可以从小型安装的 200 MB 到单个和大量 Jenkins master 的 70+ GB 不等。但是,您应该能够根据您的项目构建需求来估计所需的 RAM。

每个构建节点连接将占用 2-3 个线程,这相当于大约 2 MB 或更多的内存。如果有很多用户将访问 Jenkins 用户界面,您还需要考虑 Jenkins 的 CPU 开销。

在主服务器上分配执行程序通常是一种不好的做法,因为构建会迅速使主服务器的 CPU/内存/等超载并使实例崩溃,从而导致不必要的停机时间。相反,建议设置 Jenkins master 可以将工作委派给的代理,从而避免 master 本身的大部分工作。

最后,您可以使用来自 Jenkins 的监控插件: https ://wiki.jenkins.io/display/JENKINS/Monitoring

来源: https ://wiki.jenkins.io/display/JENKINS/Monitoring https://wiki.jenkins.io/display/JENKINS/Builds+failing+with+OutOfMemoryErrors https://www.jenkins.io/doc/ book/hardware-recommendations/#:~:text=%20amount%20of%20memory%20Jenkins,single%20and%20massive%20Jenkins%20master


推荐阅读