如何在Windows下将Jenkins作为服务启动时给予更多的堆空间?

134

我想增加Jenkins可用的堆空间。但由于它是安装为服务的,我不知道该怎么做。


1
请参见https://dev59.com/eGUq5IYBdhLWcg3wJM9A。 - Mark Butler
5个回答

122
如果您使用Aptitude (apt-get)在Ubuntu 12.04上安装Jenkins,请取消注释/etc/default/jenkins顶部几行中的JAVA_ARGS行:
# arguments to pass to java
#JAVA_ARGS="-Xmx256m"   # <--default value
JAVA_ARGS="-Xmx2048m"
#JAVA_ARGS="-Djava.net.preferIPv4Stack=true" # make jenkins listen on IPv4 address

5
如果是Windows呢? - Dejell
8
特别指出问题涉及Windows操作系统。 - Nick Udell
8
在我了解 Stack Overflow 之前,我写了这个答案,而且我很惊讶它得到了很多赞。也许,像我一样,很多人通过搜索引擎找到了这个问题,并且更大比例的这些人在使用 Linux 或 Unix?我不明白为什么。 - Steve HHH
10
或许像我一样,许多人通过搜索引擎找到了这个问题,而其中更大比例的人正在使用Linux或Unix?我不理解它。这正是我发现它的方式。 - Scott
1
不要忘记重启Jenkins服务 sudo service jenkins stop sudo service jenkins start - Camilo Silva
显示剩余4条评论

103

在你的Jenkins安装目录中有一个jenkins.xml文件,你可以在这里设置各种选项。向参数标签中添加-Xmx参数,并指定所需的大小(如果已存在则增加大小)。


1
请参考以下链接:https://dev59.com/eGUq5IYBdhLWcg3wJM9A - user817795
2
我的问题是:如果构建运行出现内存不足的情况,为什么我们应该在主节点中设置Java选项? - yarin
2
你不应该这样做。但是这个问题并不是关于构建内存耗尽的,而是关于主节点内存耗尽的。 - dunni
1
截至Ubuntu 16.04.6 LTS,没有这样的文件。Steve提供的/etc/default/jenkins解决方案是适合我的。 - insideClaw
如果Jenkins作业的构建步骤出现此错误,则应该为Jenkins SLAVE设置Java opts,对吗? - Azee77

79

您需要修改jenkins.xml文件。具体来说,您需要更改

   <arguments>-Xrs -Xmx256m 
    -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle 
    -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

    <arguments>-Xrs -Xmx2048m -XX:MaxPermSize=512m 
    -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle 
    -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

您可以通过安装Jenkins监控插件,并转到管理Jenkins / 管理插件,然后导航到管理Jenkins / 监视Hudson / Jenkins主节点来使用监视功能确定Jenkins可用的内存量。如果在Jenkins调用Maven时出现内存不足错误,则可能需要通过管理Jenkins / 配置系统设置MAVEN_OPTS,例如,如果您正在运行JDK 1.8之前的Java版本(以下值仅供参考)。
-Xmx2048m  -XX:MaxPermSize=512m

如果您正在使用JDK 1.8:
-Xmx2048m

当我尝试像上面描述的那样设置JENKINS_JAVA_OPTIONS时,我收到以下错误信息:"Starting Jenkins Unrecognized option: --XX:MaxPermSize=512m" - nemoo
3
应该只有一个连字符:-XX:MaxPermSize=512m - 上面的回复已经被编辑以修正这个打字错误。 - Adam Rofer
1
有没有想法在Windows中设置JENKINS_JAVA_OPTIONS? - ATOzTOA
2
"-XX:MaxPermSize" 在 Java 8 或更高版本中已不再使用。请参考 https://dev59.com/T2ct5IYBdhLWcg3wa8s_。 - Micha Wiedenmann

39

我已经添加到/etc/sysconfig/jenkins(CentOS)中:

# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=512m"

对于Ubuntu,相同的配置应位于/etc/default中。


16

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接