Come riparare i jenkins outfmemoryerror

Come riparare i jenkins outfmemoryerror
Uno degli errori più importanti quando si lavora con Jenkins è l'errore OUTOFMEMORY. Questo tutorial discute perché questo errore potrebbe apparire nei tuoi Jenkins e come risolverlo.

Qual è OutfMemoryError?

Un "outofmemoryerror" in Java è un errore che si verifica quando la macchina virtuale Java (JVM) non ha una memoria sufficiente disponibile per eseguire una determinata operazione correttamente.

Può essere causato da vari motivi come:

  1. Il JVM è stato configurato con una piccola dimensione massima. Pertanto, quando un'applicazione che funziona su JVM necessita di più dimensioni del heap rispetto alla dimensione max set, non riesce, portando a OutOFMemoryError.
  2. L'applicazione ha una potenziale perdita di memoria, facendola conservare sempre più memoria nel tempo.

Per risolvere un outofmemoryerror, dobbiamo identificare la causa dell'errore e intraprendere un'azione appropriata.

Tuttavia, questo è troppo ampio e può applicarsi a qualsiasi applicazione che funziona su JVM. Riducia cosa può causare un outofmemoryerror in Jenkins.

Cause di outofmemoryerror in Jenkins

Nel contesto del cluster di Jenkins, ci sono quattro cause principali di questo errore. Includono quanto segue:

  1. Aumentare la dimensione dei dati di Jenkins. All'aumentare delle dimensioni dei dati nell'istanza di Jenkins, l'applicazione richiede anche una dimensione di heap maggiore.
  2. Jenkins potrebbe elaborare temporaneamente una grande quantità di dati.
  3. Potenziale perdita di memoria in Jenkins.
  4. Il kernel del sistema host sta esaurendo la memoria virtuale.

Diagnosi della causa principale di OutOfMemoryError in Jenkins

Abbiamo stabilito quattro potenziali cause di questo tipo di errore in Jenkins. Come ridotto la causa principale di questo errore?

In tal caso, possiamo utilizzare uno strumento come VisualVM che ci consente di visualizzare l'uso della memoria di JVM sul nostro sistema.

Questo strumento può individuare la causa principale di OutOfMemoryError quando si lavora con Jenkins.

Passa al seguente link e scarica l'ultima versione della tua macchina dello strumento VisualVM.

https: // Visualvm.github.io/

Una volta scaricato, eseguire l'app e selezionare "Locale" per visualizzare l'utilizzo JVM sulla macchina locale.

Questo dovrebbe mostrarti i dettagli del tuo sistema tra cui la memoria fisica disponibile, la memoria di scambio e altro ancora.

Per determinare la causa di questo errore, interrompere Jenkins e ricominciarlo mentre monitora l'utilizzo della memoria JVM sulla macchina locale.

Se l'utilizzo della memoria si esaurisce mentre si avvia Jenkins, la causa è una piccola dimensione del mucchio.

Tuttavia, se l'utilizzo della memoria aumenta lentamente, questa potrebbe essere una potenziale perdita di memoria sulla versione Jenkins.

Se Jenkins utilizza tutta la memoria virtuale disponibile, il kernel host sta esaurendo la memoria virtuale. Puoi risolverlo aumentando la memoria virtuale disponibile o terminando le build in esecuzione di Jenkins.

Come configurare la dimensione del heap per JVM

Se stai affrontando OutOfMemoryError a causa di una piccola dimensione del heap, la soluzione è solo per allocare una dimensione di heap più grande.

Possiamo configurare la dimensione iniziale e massima del heap di JVM utilizzando i parametri -xms e -xmx.

Nota: si consiglia di impostare lo stesso valore sia per -XMS che per XMX per JVM.

Sebbene la dimensione del heap sufficiente possa variare a seconda delle risorse del sistema disponibili e del carico di lavoro di Jenkins, si consiglia di impostare la dimensione del heap su 2 GB (minimo) e 16 GB (massimo).

Puoi aumentare la dimensione del heap per Jenkins su Linux. È possibile modificare il servizio di avvio Jenkins con il seguente comando:

$ sudo systemctl modifica jenkins

È inoltre possibile modificare manualmente il file di servizio, come mostrato nel seguente:

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

Individua l'opzione java_opts e aggiungi le opzioni -xms e -xmx come mostrato nelle seguenti:

Environment = "java_opts = -djava.awt.Headless = true -xms1g -xmx1g "

L'aggiunta delle opzioni precedenti aumenta la dimensione della memoria heap a 1 GB. Una volta completato, è possibile riavviare il servizio Jenkins come segue:

$ sudo systemctl riavvia jenkins

È possibile aumentare i valori -xms e xmx per Jenkins su Windows modificando il file di configurazione.

Per impostazione predefinita, il file di configurazione si trova in C: \ Programmi \ Jenkins \ Jenkins.XML.

Modifica il blocco Argomenti del file XML come mostrato nel seguente:

Una volta modificato, salva il file e riavvia il servizio Jenkins.

Conclusione

Hai scoperto la causa di OutOfMemoryError quando hai lavorato con Jenkins. Hai anche imparato a risolvere i vari cause di questo errore. Infine, ora hai imparato i molteplici metodi per fissarlo.