Hvordan fikse Jenkins OutofMemoryError

Hvordan fikse Jenkins OutofMemoryError
En av de mest fremtredende feilene når du jobber med Jenkins er OutOfMemory -feilen. Denne opplæringen diskuterer hvorfor denne feilen kan vises i Jenkins og hvordan du fikser den.

Hva er OutofMemoryError?

En "OutOfMemoryError" i Java er en feil som oppstår når Java Virtual Machine (JVM) ikke har nok minne tilgjengelig til å utføre en gitt operasjon vellykket.

Det kan være forårsaket av forskjellige grunner som:

  1. JVM har blitt konfigurert med en liten maks maks haugestørrelse. Derfor, når en applikasjon som kjører på JVM trenger mer haugestørrelse enn den faste maksimale størrelsen, mislykkes den, noe som fører til OutOfMemoryError.
  2. Applikasjonen har en potensiell minnelekkasje, noe som får den til å beholde mer og mer minne over tid.

For å løse en OutOfMemoryError, må vi identifisere årsaken til feilen og ta en passende handling.

Dette er imidlertid for bredt og kan gjelde for enhver applikasjon som kjører på JVM. La oss begrense hva som kan forårsake en outofmemoryError i Jenkins.

Årsaker til OutofMemoryError i Jenkins

I sammenheng med Jenkins -klyngen er det fire hovedårsaker til denne feilen. De inkluderer følgende:

  1. Øke Jenkins datastørrelse. Etter hvert som størrelsen på dataene dine i Jenkins -forekomsten din øker, krever applikasjonen også en større haugestørrelse.
  2. Jenkins behandler kanskje en stor mengde data midlertidig.
  3. Potensiell minnelekkasje i Jenkins.
  4. Vertssystemkjernen går tom for virtuelt minne.

Diagnostisering av hovedårsaken til OutofMemoryError i Jenkins

Vi etablerte fire potensielle årsaker til denne typen feil i Jenkins. Hvordan begrenser vi hovedårsaken til denne feilen?

I et slikt tilfelle kan vi bruke et verktøy som VisualVM som lar oss visualisere minnebruken av JVM på systemet vårt.

Dette verktøyet kan finne den viktigste årsaken til OutofMemoryError når du jobber med Jenkins.

Naviger til følgende lenke og last ned maskinens siste versjon av VisualVM -verktøyet.

https: // visualvm.github.io/

Når du er lastet ned, kjør appen og velg “Lokal” for å se JVM -bruken på din lokale maskin.

Dette skal vise deg detaljene i systemet ditt, inkludert tilgjengelig fysisk minne, bytte minne og mer.

For å bestemme årsaken til denne feilen, stopp Jenkins og start den igjen mens du overvåker JVM -minnebruken på din lokale maskin.

Hvis minnebruken maksimalt mens du starter Jenkins, er årsaken en liten haugestørrelse.

Imidlertid, hvis minnebruken sakte øker, kan dette være en potensiell minnelekkasje på Jenkins -versjonen din.

Hvis Jenkins bruker alt tilgjengelig virtuelt minne, er vertskjernen tom for virtuelt minne. Du kan fikse dette ved å øke det tilgjengelige virtuelle minnet eller avslutte de løpende Jenkins -bygningene.

Hvordan du konfigurerer haugestørrelsen for JVM

Hvis du står overfor OutOfMemoryError på grunn av en liten haugestørrelse, er løsningen bare å tildele en større haugestørrelse.

Vi kan konfigurere JVMs innledende og maksimale heapstørrelse ved å bruke -xms og -xmx parametere.

Merk: Det anbefales å angi samme verdi for både -xms og XMX for JVM.

Selv om den tilstrekkelige haugestørrelsen kan variere avhengig av tilgjengelige systemressurser og Jenkins arbeidsmengde, anbefales det å stille haugestørrelsen til 2 GB (minimum) og 16 GB (maksimalt).

Du kan øke haugestørrelsen for Jenkins på Linux. Du kan redigere Jenkins oppstartstjeneste med følgende kommando:

$ sudo systemctl rediger jenkins

Du kan også redigere tjenestefilen manuelt, som vist i følgende:

sudo vim/usr/lib/systemd/system/jenkins.service

Finn alternativet Java_opts og legg til -xms og -xmx -alternativene som vist i følgende:

Miljø = "java_opts = -djava.awt.Hodeløs = True -Xms1g -xmx1g "

Legge til de tidligere alternativene øker minnestørrelsen til minnet til 1 GB. Når du er fullført, kan du starte Jenkins -tjenesten på nytt som følger:

$ sudo SystemCTL Restart Jenkins

Du kan øke -xmene og XMX -verdiene for Jenkins på Windows ved å redigere konfigurasjonsfilen.

Som standard er konfigurasjonsfilen lokalisert i C: \ Program Files \ Jenkins \ Jenkins.XML.

Rediger argumenterblokken til XML -filen som vist i følgende:

Når du er redigert, lagre filen og start Jenkins -tjenesten på nytt.

Konklusjon

Du oppdaget årsaken til OutofMemoryError når du jobbet med Jenkins. Du lærte også hvordan du feilsøker de forskjellige årsakene til denne feilen. Til slutt lærte du nå flere metoder for å fikse det.