jenkins - 解除工作人员 RAM 内存限制
问题描述
我正在尝试在 jenkins 中调整构建作业,问题是,由于内存不足,它一直失败,我已经调整了 java xmx,但它没有解决问题。
事实证明,我在工作人员中有 RAM 内存限制,我尝试将这些命令作为构建脚本的一部分运行:“free -m”和“cat /proc/meminfo”,他们都确认作业正在以 1GB RAM 限制运行,服务器有更多,但构建没有使用它,并且由于内存不足而不断失败。
请帮我解决这个问题,我怎样才能解除这个限制?谢谢你
解决方案
堆还是 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。
推荐阅读
- c# - '类型 FileConfigurationSource 不包含 ConfigurationElementTypeAttribute。'
- ios - Ionic 3.2 无法在 IOS 应用程序中加载 json
- python - 使用旧数据库时,Django“未定义”对象没有属性 id
- vector - Julia:为特定大小的向量制作类型
- python - 试图在 Windows 机器上部署 Django
- android - 关于将 android 块添加到顶级 build.gradle 的 Android 文档是否错误
- java - 如何使用 Java 注释设置 Spring Integration Collaborating Channel 适配器?
- tensorflow - 导出自定义 Keras 模型以使用 Cloud ML Engine 进行预测
- java - 线程“主”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 IBScanUltimate
- ios - 无法在 tableview 自定义单元格中获取文本字段文本