How to give Jenkins more heap space when it´s started as a service?
Asked Answered
B

5

134

I want to increase the available heap space for Jenkins. But as it is installed as a service I don´t know how to do it.

Botel answered 9/5, 2011 at 11:56 Comment(1)
See also #14762662Brunei
S
104

In your Jenkins installation directory there is a jenkins.xml, where you can set various options. Add the parameter -Xmx with the size you want to the arguments-tag (or increase the size if its already there).

Sauterne answered 9/5, 2011 at 12:0 Comment(5)
see also #14762662Yamashita
my question is : if the builds is running out of memory , why we should set the java options in the master ?Monoatomic
You shouldn't. But this question was not about builds running out of memory, it was about master running out of memory.Sauterne
As of Ubuntu 16.04.6 LTS, there's no such file. The /etc/default/jenkins solution offered below by Steve is the one that works for me.Rosamariarosamond
So if the build step of a jenkins job is failing with this error, then java opts should be set for the jenkins SLAVE, right?Dorm
D
122

If you used Aptitude (apt-get) to install Jenkins on Ubuntu 12.04, uncomment the JAVA_ARGS line in the top few lines of /etc/default/jenkins:

# 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
Dumbbell answered 19/6, 2012 at 23:23 Comment(8)
what if it's windows?Lest
Question specifically states Windows.Piemonte
Yeah, I wrote this answer before I knew what I was doing on SO, and I'm surprised that it's gotten so many upvotes. Perhaps, like me, a lot of people find their way to this question through a search engine, and a larger percentage of those people are using Linux or Unix? I don't understand it.Dumbbell
"Perhaps, like me, a lot of people find their way to this question through a search engine, and a larger percentage of those people are using Linux or Unix? I don't understand it." That's exactly how I found it.Colombia
Don't forget restart jenkins service sudo service jenkins stop sudo service jenkins startTraceytrachea
We should edit the question to include linux servers, as the majority of servers run some form of linux OS, and not windows, and since this answer has the most up votes.Maharajah
/etc/sysconfig/jenkins for centos 7Similar
Warning! After Jenkins 2.332.1 the /etc/default/jenkins config file is ignored: #71494731Daph
S
104

In your Jenkins installation directory there is a jenkins.xml, where you can set various options. Add the parameter -Xmx with the size you want to the arguments-tag (or increase the size if its already there).

Sauterne answered 9/5, 2011 at 12:0 Comment(5)
see also #14762662Yamashita
my question is : if the builds is running out of memory , why we should set the java options in the master ?Monoatomic
You shouldn't. But this question was not about builds running out of memory, it was about master running out of memory.Sauterne
As of Ubuntu 16.04.6 LTS, there's no such file. The /etc/default/jenkins solution offered below by Steve is the one that works for me.Rosamariarosamond
So if the build step of a jenkins job is failing with this error, then java opts should be set for the jenkins SLAVE, right?Dorm
B
79

You need to modify the jenkins.xml file. Specifically you need to change

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

to

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

You can also verify the Java options that Jenkins is using by installing the Jenkins monitor plugin via Manage Jenkins / Manage Plugins and then navigating to Managing Jenkins / Monitoring of Hudson / Jenkins master to use monitoring to determine how much memory is available to Jenkins.

If you are getting an out of memory error when Jenkins calls Maven, it may be necessary to set MAVEN_OPTS via Manage Jenkins / Configure System e.g. if you are running on a version of Java prior to JDK 1.8 (the values are suggestions):

-Xmx2048m  -XX:MaxPermSize=512m

If you are using JDK 1.8:

-Xmx2048m
Brunei answered 14/11, 2011 at 13:51 Comment(5)
when i try setting the JENKINS_JAVA_OPTIONS as described above i get: "Starting Jenkins Unrecognized option: --XX:MaxPermSize=512m"Sovereignty
There should be only one hyphen: -XX:MaxPermSize=512m - the above response has been edited to fix this typo.Piccadilly
Any idea how to set JENKINS_JAVA_OPTIONS in Windows?Saltillo
On Windows, according to jenkins.361315.n4.nabble.com/… you use Control Panel -> System -> Advanced -> Environment VariablesBrunei
-XX:MaxPermSize is no longer used with Java 8 or higher https://mcmap.net/q/99192/-what-does-xx-maxpermsize-doEuchology
T
39

I've added to /etc/sysconfig/jenkins (CentOS):

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

For ubuntu the same config should be located in /etc/default

Tymothy answered 21/8, 2015 at 10:51 Comment(0)
P
16

From the Jenkins wiki:

The JVM launch parameters of these Windows services are controlled by an XML file jenkins.xml and jenkins-slave.xml respectively. These files can be found in $JENKINS_HOME and in the slave root directory respectively, after you've install them as Windows services.

The file format should be self-explanatory. Tweak the arguments for example to give JVM a bigger memory.

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

Pomiculture answered 9/5, 2011 at 12:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.