java - Kuinka voin antaa Jenkinsille enemmän kasata tilaa, kun se toimii daemonina Ubuntussa?

Translate

Jenkins-työpaikoilleni loppuu muisti, antaajava.lang.OutOfMemoryErrorviestit koontilokissa. Mutta käytin Ubuntu Package Manageria,aptitudetaiapt-getJenkinsin asentamiseksi, enkä tiedä, mistä etsiä Jenkinsille osoitetun kasatilan määrää.

This question and all comments follow the "Attribution Required."

Kaikki vastaukset

Translate

On olemassa kahdenlaisiaOutOfMemoryErrorviestit, joita saatat kohdata Jenkins-työn aikana:

  • java.lang.OutOfMemoryError: Heap space- tämä tarkoittaa, että sinun on lisättävä Jenkinsille varattua kasatilaa, kun daemon käynnistyy.
  • java.lang.OutOfMemoryError: PermGen space- Tämä tarkoittaa, että sinun on lisättävä Java-objektien metatietojen tallentamiseen varattua sukupolvitilaa. Arvon lisääminen-Xmxparametrilla ei ole vaikutusta tähän virheeseen.

Poista Ubuntu 12.04 LTS: ssä kommenttiJAVA_ARGSasettaminen riville kymmenen/etc/default/jenkins:

  • Lisää lisää Java-kasatilaa lisäämällä-XmxJava-parametri. Se asettaa muistin allokointipoolin (roskat kerätyn kasan) enimmäiskoon.
  • Jos haluat lisätä PermGen-tilaa, lisää parametriXX:MaxPermSize=512m(korvata512jotain muuta, jos haluat enemmän. Pysyvä sukupolven kasa sisältää metatietoja käyttäjäluokista.

Esimerkiksi tämä ote on oletusarvosta/etc/default/jenkinsuuden asennuksen jälkeen Jenkins:

# arguments to pass to java
#JAVA_ARGS="-Xmx256m"

Näin näyttää, jos asetat kasan tilaksi 1 Gt:

# arguments to pass to java
JAVA_ARGS="-Xmx1048m"

Ole varovainen, ettet aseta kasan kokoa liian suureksi, koska mikä tahansa varaamasi kohde vähentää käyttöjärjestelmän ja muiden ohjelmien käytettävissä olevan muistin määrää, mikä voi aiheuttaa liikaa sivutusta (muisti vaihdetaan edestakaisin RAM-muistin ja vaihtolevyn välillä, mikä hidastaa järjestelmäsi alas).

Jos asetat myösMaxPermSpace, sinun on lisättävä väli parametrien väliin):

# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"

Kun olet tehnyt muutoksen, käynnistä Jenkins uudelleen sulavasti Jenkinsin web-käyttöliittymästä tai pakota välitön uudelleenkäynnistys komentoriviltäsudo /etc/init.d/jenkins restart.

Pidin seuraavasta sivustosta hyödyllistä ymmärtää Java-enimmäis- ja pysyvän sukupolven kasakokoja:http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html.

Lähde
Translate

CentOS: n hakemisto, johon Jenkins.xml sijaitsee, on oletuksena / etc / sysconfig / for jenkins-1.579-1.1

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="

Lähde
Translate

Jos käytät Ubuntu Serveria, asenna ensinSeurantalaajennus nähdäksesi kuinka paljon muistia Jenkins käyttää. Esimerkiksi näin sen asentamisen jälkeen:

enter image description here

Sitten komennollafree -m, Tajusin mikä oli palvelimen muistikoko. Minun tapauksessani 16 Gt. Tämän tiedon avulla avasin/etc/default/jenkinsja muutti:

JAVA_ARGS="-Djava.awt.headless=true"

to

JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"

Missä 8384 on 8 Gt. Sitten aloitin Jenkinsin uudelleen komennollasudo service jenkins restartja sitten, laukaistuasi muistiongelmia saavan työn, asiat näyttivät paljon paremmilta ja työ saattoi suorittaa loppuun seuraavilla ja seuraavilla ajoilla:

enter image description here

Lähde
Translate

Toinen tapa määrittää kasan koko tietyille töille on käyttää ympäristömuuttujia kullekin työlle. Tämä varmistaa, että muisti on käytettävissä, kun suurempaa muistia vaativa työ ei ole käytössä.

GRADLE_OPTS="-Dorg.gradle.jvmargs=-Xms1024M -Xmx8192M -XX:PermSize=512M -XX:MaxPermSize=2048 -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8"

JAVA_OPTS="-XX:MaxPermSize=2048M"

Jenkins job config

Lähde
Kirjailijasta