Jak zapewnić Jenkinsowi więcej miejsca na stosie, gdy jest uruchamiany jako usługa w systemie Windows?


Odpowiedzi:


90

W katalogu instalacyjnym Jenkinsa znajduje się plik jenkins.xml, w którym można ustawić różne opcje. Dodaj parametr -Xmx z żądanym rozmiarem do tagu arguments (lub zwiększ rozmiar, jeśli już tam jest).



Moje pytanie brzmi: jeśli w kompilacjach kończy się pamięć, dlaczego powinniśmy ustawić opcje java w master?
yarin

1
Nie powinieneś. Ale to pytanie nie dotyczyło kompilacji, w której zabrakło pamięci, ale mistrzowi brakowało pamięci.
dunni

Od wersji Ubuntu 16.04.6 LTS nie ma takiego pliku. /etc/default/jenkinsRozwiązanie oferowane poniżej Steve jest ten, który pracuje dla mnie.
insideClaw

110

Jeśli użyłeś Aptitude (apt-get) do zainstalowania Jenkinsa na Ubuntu 12.04, odkomentuj JAVA_ARGSwiersz w kilku pierwszych wierszach /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

3
co jeśli to okna?
Dejell

6
Pytanie konkretnie dotyczy systemu Windows.
Nick Udell

6
Tak, napisałem tę odpowiedź, zanim dowiedziałem się, co robię na SO, i jestem zaskoczony, że otrzymałem tak wiele głosów poparcia. Być może, tak jak ja, wiele osób trafia na to pytanie przez wyszukiwarkę, a większy procent z nich korzysta z Linuksa lub Uniksa? Nie rozumiem tego.
Steve HHH

8
„Być może, tak jak ja, wiele osób znajduje drogę do tego pytania za pośrednictwem wyszukiwarki, a większy procent z nich korzysta z Linuksa lub Uniksa? Nie rozumiem tego”. Dokładnie tak to znalazłem.
Scott,

1
Nie zapomnij zrestartować usługi Jenkinsasudo service jenkins stop sudo service jenkins start
Camilo Silva

74

Musisz zmodyfikować plik jenkins.xml . W szczególności musisz się zmienić

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

do

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

Możesz również sprawdzić opcje Java, z których korzysta Jenkins, instalując wtyczkę monitora Jenkins za pośrednictwem Zarządzaj Jenkins / Zarządzaj wtyczkami, a następnie przechodząc do Managing Jenkins / Monitoring of Hudson / Jenkins master, aby użyć monitorowania w celu określenia, ile pamięci jest dostępne dla Jenkins.

Jeśli otrzymujesz błąd braku pamięci, gdy Jenkins wywołuje Maven, może być konieczne ustawienie MAVEN_OPTS za pomocą Manage Jenkins / Configure System, np. Jeśli korzystasz z wersji Java przed JDK 1.8 (wartości są sugestiami):

-Xmx2048m  -XX:MaxPermSize=512m

Jeśli używasz JDK 1.8:

-Xmx2048m

kiedy próbuję ustawić JENKINS_JAVA_OPTIONS zgodnie z powyższym opisem, otrzymuję: „Uruchamianie Nierozpoznanej opcji Jenkinsa: --XX: MaxPermSize = 512m”
nemoo

2
Powinien być tylko jeden łącznik: -XX:MaxPermSize=512m- powyższa odpowiedź została zmodyfikowana, aby naprawić tę literówkę.
Adam Rofer

1
Masz jakiś pomysł, jak ustawić JENKINS_JAVA_OPTIONS w systemie Windows?
ATOzTOA

W systemie Windows, zgodnie z jenkins.361315.n4.nabble.com/ ... używasz Panelu sterowania -> System -> Zaawansowane -> Zmienne środowiskowe
Mark Butler

1
-XX:MaxPermSizenie jest już używany z Javą 8 lub nowszą stackoverflow.com/questions/12114174/what-does-xxmaxpermsize-do
Micha Wiedenmann

24

Dodałem do / etc / sysconfig / jenkins (CentOS):

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

W przypadku systemu Ubuntu ta sama konfiguracja powinna znajdować się w / etc / default


16

Z wiki Jenkins:

Parametry uruchamiania maszyny JVM tych usług systemu Windows są kontrolowane odpowiednio przez plik XML jenkins.xml i jenkins-slave.xml. Pliki te można znaleźć odpowiednio w $ JENKINS_HOME oraz w głównym katalogu slave, po zainstalowaniu ich jako usług Windows.

Format pliku powinien być zrozumiały. Dostosuj argumenty, na przykład, aby zwiększyć pamięć JVM.

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


-1

Jeśli używasz szablonów Jenkins, możesz mieć zdefiniowane dodatkowe ustawienia maszyny wirtualnej, co może kolidować z ustawieniami maszyny wirtualnej w systemie

przykład, twój tempalat może mieć odniesienia takie jak te

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

Upewnij się, że te wpisy szablonu są zgodne z ustawieniami maszyny wirtualnej w systemie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.