So reparieren Sie die Jenkins outofMemoryError

So reparieren Sie die Jenkins outofMemoryError
Einer der bekanntesten Fehler bei der Arbeit mit Jenkins ist der Fehler. In diesem Tutorial wird erläutert, warum dieser Fehler in Ihren Jenkins erscheinen könnte und wie es behoben werden kann.

Was ist der OutofMemoryError??

Ein „outofMemoryError“ in Java ist ein Fehler, der auftritt, wenn die Java Virtual Machine (JVM) nicht über genügend Speicher verfügt, um einen bestimmten Vorgang erfolgreich auszuführen.

Es kann durch verschiedene Gründe verursacht werden, wie:

  1. Das JVM wurde mit einer kleinen maximalen Haufengröße konfiguriert. Wenn eine Anwendung, die auf dem JVM ausgeführt wird.
  2. Die Anwendung hat ein potenzielles Speicherleck, wodurch es im Laufe der Zeit immer mehr Speicher behält.

Um einen OutofMemoryError zu lösen, müssen wir die Ursache des Fehlers identifizieren und eine entsprechende Maßnahme ergreifen.

Dies ist jedoch zu breit und kann für jede Anwendung, die auf dem JVM ausgeführt wird. Lassen Sie uns eingrenzen, was in Jenkins einen OutofMemoryError verursachen kann.

Ursachen von OutofMemoryError in Jenkins

Im Zusammenhang mit dem Jenkins -Cluster gibt es vier Hauptursachen für diesen Fehler. Dazu gehören Folgendes:

  1. Erhöhen Sie die Datengröße von Jenkins. Mit zunehmender Größe Ihrer Daten in Ihrer Jenkins -Instanz erfordert die Anwendung auch eine größere Haufengröße.
  2. Jenkins kann vorübergehend eine große Datenmenge verarbeiten.
  3. Potenzielles Speicherleck in Jenkins.
  4. Dem Host -System -Kernel geht der virtuelle Speicher aus.

Diagnose der Hauptursache des OutofMemoryErrors in Jenkins

Wir haben vier potenzielle Ursachen für diese Art von Fehler in Jenkins festgelegt. Wie beschränken wir die Hauptursache für diesen Fehler?

In einem solchen Fall können wir ein Tool wie VisualVM verwenden, mit dem wir die Speicherverwendung des JVM auf unserem System visualisieren können.

Dieses Tool kann die Hauptursache des OutofMemoryErrors bei der Arbeit mit Jenkins bestimmen.

Navigieren Sie zum folgenden Link und laden Sie die neueste Version Ihres Maschine des VisualVM -Tools herunter.

https: // visualvm.Github.io/

Führen Sie die App nach dem Herunterladen aus und wählen Sie "Lokal" aus, um die JVM -Nutzung auf Ihrem lokalen Computer anzuzeigen.

Dies sollte Ihnen die Details Ihres Systems zeigen, einschließlich des verfügbaren physischen Speichers, des Swap -Speichers und mehr.

Um die Ursache für diesen Fehler zu bestimmen, stoppen Sie Jenkins und starten Sie sie erneut, während Sie die JVM -Speicherverwendung auf Ihrer lokalen Maschine überwachen.

Wenn die Speicherverwendung beim Starten von Jenkins maximiert, ist die Ursache eine kleine Haufengröße.

Wenn die Speicherverwendung jedoch langsam zunimmt, kann dies ein potenzielles Speicherleck für Ihre Jenkins -Version sein.

Wenn Jenkins den gesamten verfügbaren virtuellen Speicher verwendet, geht der Host -Kernel aus dem virtuellen Speicher aus. Sie können dies beheben, indem Sie den verfügbaren virtuellen Speicher erhöhen oder die laufenden Jenkins -Builds beenden.

So konfigurieren Sie die Haufengröße für das JVM

Wenn Sie aufgrund einer kleinen Haufengröße vor dem OutofMemoryError ausgesetzt sind, besteht die Lösung nur, um eine größere Haufengröße zuzuweisen.

Wir können die anfängliche und maximale Heap -Größe des JVM unter Verwendung der Parameter -xms und -xmx konfigurieren.

Hinweis: Es wird empfohlen, den gleichen Wert für -xms und XMX für den JVM festzulegen.

Obwohl die ausreichende Heap -Größe je nach den verfügbaren Systemressourcen und Jenkins -Arbeitsbelastung variieren kann, wird empfohlen, die Haufengröße auf 2 GB (minimal) und 16 GB (maximal) festzulegen.

Sie können die Haufengröße für Jenkins unter Linux erhöhen. Sie können den Jenkins -Startdienst mit dem folgenden Befehl bearbeiten:

$ sudo systemctl bearbeiten jenkins

Sie können die Servicedatei auch manuell bearbeiten, wie in Folgendes gezeigt:

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

Suchen Sie die Option java_opts und fügen Sie die Optionen -xms und -xmx hinzu, wie im Folgenden gezeigt:

Umgebung = "Java_Opts = -djava.awt.Headless = true -xms1g -xmx1g "

Das Hinzufügen der vorherigen Optionen erhöht die Heap -Speichergröße auf 1 GB. Nach Abschluss können Sie den Jenkins -Dienst wie folgt neu starten:

$ sudo systemctl starten Sie Jenkins neu starten

Sie können die Werte -xms und XMX für Jenkins unter Windows erhöhen, indem Sie die Konfigurationsdatei bearbeiten.

Standardmäßig befindet sich die Konfigurationsdatei in C: \ Programmdateien \ Jenkins \ Jenkins.xml.

Bearbeiten Sie den Argumenteblock der XML -Datei, wie in Folgendes gezeigt:

Speichern Sie die Datei nach dem Bearbeitung und starten Sie den Jenkins -Dienst neu.

Abschluss

Sie haben die Ursache des OutofMemoryErrors bei der Arbeit mit Jenkins entdeckt. Sie haben auch gelernt, wie man die verschiedenen Ursachen dieses Fehlers behebt. Schließlich haben Sie nun die verschiedenen Methoden zum Fixieren gelernt.