【问题标题】:How to give Jenkins more heap space when it´s started as a service under Windows?当它在 Windows 下作为服务启动时,如何给 Jenkins 更多的堆空间?
【发布时间】:2011-08-21 15:30:55
【问题描述】:

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

【问题讨论】:

标签: jenkins heap-memory jvm-arguments


【解决方案1】:

如果您使用 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

【讨论】:

  • 如果是windows呢?
  • 问题具体说明了 Windows。
  • 是的,我在知道自己在 SO 上做了什么之前写了这个答案,我很惊讶它得到了这么多的支持。也许,和我一样,很多人通过搜索引擎找到了解决这个问题的方法,而且其中更大比例的人使用的是 Linux 或 Unix?我不明白。
  • “也许,和我一样,很多人通过搜索引擎找到了解决这个问题的方法,而且这些人中有更大比例的人使用的是 Linux 或 Unix?我不明白。”我就是这样找到它的。
  • 别忘了重启jenkins服务sudo service jenkins stopsudo service jenkins start
【解决方案2】:

在您的 Jenkins 安装目录中有一个 jenkins.xml,您可以在其中设置各种选项。 将具有所需大小的参数 -Xmx 添加到 arguments-tag (如果已经存在,则增加大小)。

【讨论】:

  • 我的问题是:如果构建的内存不足,为什么我们应该在 master 中设置 java 选项?
  • 你不应该。但这个问题不是关于构建内存不足的问题,而是关于 master 内存不足的问题。
  • 从 Ubuntu 16.04.6 LTS 开始,没有这样的文件。下面由 Steve 提供的 /etc/default/jenkins 解决方案适合我。
【解决方案3】:

您需要修改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>

您还可以通过 Manage Jenkins / Manage Plugins 安装 Jenkins monitor plugin 来验证 Jenkins 正在使用的 Java 选项,然后导航到 Managing Jenkins / Hudson 监控 / Jenkins master 使用监控来确定 Jenkins 有多少内存可用。

如果 Jenkins 调用 Maven 时出现内存不足错误,可能需要通过 Manage Jenkins / Configure System 设置 MAVEN_OPTS,例如如果您在 JDK 1.8 之前的 Java 版本上运行(这些值是建议值):

-Xmx2048m  -XX:MaxPermSize=512m

如果您使用的是 JDK 1.8:

-Xmx2048m

【讨论】:

  • 当我尝试如上所述设置 JENKINS_JAVA_OPTIONS 时,我得到:“启动 Jenkins 无法识别的选项:--XX:MaxPermSize=512m”
  • 应该只有一个连字符:-XX:MaxPermSize=512m - 上面的回复已经过编辑以修正这个错字。
  • 知道如何在 Windows 中设置 JENKINS_JAVA_OPTIONS 吗?
  • 在Windows上,根据jenkins.361315.n4.nabble.com/…你使用控制面板->系统->高级->环境变量
  • -XX:MaxPermSize 不再与 Java 8 或更高版本一起使用 stackoverflow.com/questions/12114174/what-does-xxmaxpermsize-do
【解决方案4】:

我已添加到 /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

【讨论】:

    【解决方案5】:

    来自 Jenkins 维基:

    这些的JVM启动参数 Windows 服务由一个 XML 文件 jenkins.xml 和 jenkins-slave.xml 分别。这些 文件可以在 $JENKINS_HOME 中找到 并在从属根目录中 分别安装后 它们作为 Windows 服务。

    文件格式应该是 不言自明。调整论点 例如给 JVM 一个更大的 记忆。

    https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+as+a+Windows+service

    【讨论】:

      【解决方案6】:

      如果您使用的是 Jenkins 模板,您可能会在其中定义其他虚拟机设置,这可能与您的系统虚拟机设置冲突

      你的模板可能有这样的参考

       <mavenOpts>-Xms512m -Xmx1024m -Xss1024k -XX:MaxPermSize=1024m -Dmaven.test.failure.ignore=false</mavenOpts> 
      

      确保将这些模板条目与系统的 VM 设置对齐

      【讨论】:

        猜你喜欢
        • 2018-05-28
        • 2013-01-23
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 2010-11-12
        相关资源
        最近更新 更多