Ich habe einige Gründe für eine anormale CPU-Auslastung bei meiner Jenkins-Installation unter Windows 7 Ultimate festgestellt.
-
Ich hatte kürzlich ein Upgrade von v2.138 auf v2.140 durchgeführt und einige zusätzliche Plugins hinzugefügt. Ich bemerkte ein Problem mit der ausführbaren Java-Datei von Jenkins, die jedes Mal, wenn ein Job ausgelöst wurde, bis zu 60 % meiner CPU-Zeit beanspruchte. Keiner der Jobs war CPU-gebunden, sondern holte nur Daten von externen Servern, also machte es keinen Sinn. Es wurde mit einem einfachen Neustart des Jenkins-Dienstes behoben. Ich nehme an, dass das Upgrade einfach nicht sauber abgeschlossen wurde.
-
Java Garbage Collection hat Fehler ausgelöst und die CPU in Beschlag genommen, wenn es mit den Standardspeichereinstellungen ausgeführt wurde. Es war wahrscheinlich übertrieben, aber ich bin wild geworden und habe den Java Heap Space für Jenkins von den standardmäßigen 256 MB auf 4 GB erhöht. was dieses Problem für mich gelöst hat.
Siehe diese Lösung für Anweisungen:https://stackoverflow.com/a/8122566/4479786
Wie sich herausstellte, war mein Problem, dass mehrere Jobs Tausende von alten Builds hatten. Das war in Jenkins 1.6 in Ordnung, aber es ist ein Problem in 2.5 (ich schätze, Jenkins versucht vielleicht, alle Builds in den Speicher zu laden, wenn Sie die Job-Übersichtsseite anzeigen). Um das Problem zu beheben, habe ich einfach die meisten alten Builds aus den Problemjobs mit dieser Strategie gelöscht und dann jenkins neu geladen. Hat wunderbar funktioniert!
Ich habe auch das Plug-in "Discard Old Builds" so eingestellt, dass nur die 50 neuesten Builds beibehalten werden, um zu verhindern, dass dies erneut passiert.
Immer wenn eine Anfrage eingeht, erzeugt Jenkins einige Threads, um die Anfrage zu bedienen. Nach dem Upgrade von Jenkins wurde es zu diesem Zeitpunkt möglicherweise mit hoher Geschwindigkeit aufgerufen. Bitte überprüfen Sie die CPU- und Speicherauslastung des Jenkins-Servers in den folgenden Szenarien:
- Jenkins befindet sich im Leerlauf und es werden keine anderen Apps auf dem Server ausgeführt.
- Build geplant und keine anderen Apps werden auf dem Server ausgeführt.
Und vergleichen Sie die Verhaltensweisen, die Ihnen helfen könnten festzustellen, ob Jenkins oder die parallele Ausführung von Jenkins mit anderen Apps wirklich Probleme bereiten.
Wie @vlp sagte, versuchen Sie, die Jenkins-Anwendung über JVisualVM mit Jstad-Konfiguration zu überwachen, um sich einzuklinken. Verweisen Sie auf diesen Link, um JvisualVM mit Jstad zu konfigurieren.