使用高质量的插件修复Jenkins的内存不足

时间:2014-05-27 20:01:50

标签: java maven jenkins checkstyle cobertura

我所知道的是,在我安装和配置现有作业的高质量插件时,我的詹金斯昨晚瘫痪了。起初工作似乎挂起,然后服务器本身变得没有响应。作业控制台的最后一行是:

[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,但top中的Jenkins进程运行的虚拟内存超过2GB。我从https://wiki.jenkins-ci.org/display/JENKINS/Builds+failing+with+OutOfMemoryErrors了解到我也应该考虑perm大小(看起来它与“FATAL:PermGen space”有关)以及maven任务记忆。

我正在运行的VM主机已经设置了7GB内存,该机器专用于Jenkins,希望将来安装SonarQube,所以我有一些空间来改变内存设置。有人可以帮我弄清楚内存设置,让Jenkins及其插件开心吗?

1 个答案:

答案 0 :(得分:0)

你的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启动。查看该文件并尝试找到类似

的内容

export CATALINA_OPTS =“ - DJENKINS_HOME = $ JENKINS_BASEDIR / jenkins-home -Xmx512m -Djava.awt.headless = true”

并在那里添加参数。 (我不确定文件是怎么样的,所以我不能告诉你确切的行)