java - 使用优质插件修复 Jenkins 中的内存不足问题

标签 java maven jenkins checkstyle cobertura

我所知道的是,昨晚我在现有工作中安装和配置高质量插件时,我的 Jenkins 崩溃了。起初,作业似乎挂起,然后服务器本身变得无响应。作业控制台的最后几行是:

[INFO] Generating "Project Team" report    --- maven-project-info-reports-plugin:2.7
[INFO] Generating "Project Summary" report    --- maven-project-info-reports-plugin:2.7
[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.7
[CHECKSTYLE] Parsing file /var/lib/jenkins/jobs/fedsso-dev/workspace/target/checkstyle-result.xml
[CHECKSTYLE] Successfully parsed file /var/lib/jenkins/jobs/fedsso-dev/workspace/target/checkstyle-result.xml of module mdlive-sso with 9924 warnings.
FATAL: PermGen space
FATAL: PermGen space
Finished: null

此时服务器已经在树林里了,我什至无法用server jenkins stop来阻止它。 ,不得不kill -9过程。

看起来内存不足,但我对让 Jenkins、Maven 和插件发挥良好作用还很陌生。 /etc/default/jenkins文件没有指定 JVM 堆大小,所以我认为它使用的是默认值,我认为是 256MB,但 Jenkins 进程在 top 中正在使用超过 2GB 的虚拟内存运行。我从https://wiki.jenkins-ci.org/display/JENKINS/Builds+failing+with+OutOfMemoryErrors了解到我还应该考虑 Perm 大小(看起来与“FATAL: PermGen space”相关)以及 Maven 任务内存。

我运行的 VM 主机已设置了 7GB 内存,该机器专用于 Jenkins,并希望将来安装 SonarQube,这样我就有一些空间来更改内存设置。有人可以帮助我了解内存设置以使 Jenkins 及其插件满意吗?

最佳答案

您的 jenkins 是独立运行(java -jar jenkins.war)还是部署为 Web 容器?

如果 jenkins 作为独立运行,您只需添加以下参数:

java -XX:MaxPermSize=512m -Xmx5120M -jar jenkins.war 这会将您的 PermGem 增加到 512m,堆增加到 5120M,您可以根据需要随意修改这些值。

但我想这太简单了..我想 jenkins 正在运行 als web 容器。在这种情况下,您必须更改 Web 服务器的启动参数。

如果您正在运行 Tomcat,您可以添加 CATALINA_OPTS="-Xms512m -Xmx5000m -XX:MaxPermSize=512m"到 catalina.bat/或 sh(如果运行 Linux)。

或者,如果直接通过 apt-get 安装,jenkins 则通过/etc/init.d/jenkins 启动。查看该文件并尝试找到类似的内容

导出CATALINA_OPTS="-DJENKINS_HOME=$JENKINS_BASEDIR/jenkins-home -Xmx512m -Djava.awt.headless=true"

并在那里添加参数。 (我不确定该文件是什么样子,所以我无法告诉您确切的行)

关于java - 使用优质插件修复 Jenkins 中的内存不足问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23897927/

相关文章:

java - JVM 字符串存储在内存中

mysql - 我无法使用 Intellij 连接到 Maven 中的 mysql 服务器

java - 是否有任何关于 Jenkins 的 Pipeline 插件套件(内部)结构如何的文档?

java - 在 spring data mongodb 存储库的 @Query 注释中使用 $or 运算符

java - Quartz调度器不工作

java - 使用 intelliJ 运行 spring mvc 应用程序

maven - liquibase-maven-plugin 无法执行目标

php - 如何使用 PHP 创建/触发新的 jenkins 作业?

java - Jenkins 的构建被阻止 "Option code: 65002"

java - java类加载器可以多次加载一个类吗