it-swarm.com.de

Jenkins läuft mit sehr hoher CPU-Auslastung

Ich habe vor kurzem ein Upgrade von Jenkins 1.6 auf 2.5 durchgeführt. Nachdem ich dies getan hatte, bemerkte ich eine sehr hohe CPU-Auslastung, manchmal über 300% (es gibt nur 4 Kerne, daher glaube ich nicht, dass es über 400% gehen könnte). Ich bin nicht sicher, wo ich mit dem Debuggen beginnen soll, aber hier ist ein Thread-Dump und einige Screenshots von top/htop

htop htop

oben: top

14
Matt Korostoff

Wie sich herausstellte, bestand mein Problem darin, dass mehrere Jobs Tausende von alten Builds hatten. Dies war in Jenkins 1.6 in Ordnung, aber es ist ein Problem in 2.5 (Ich denke, Jenkins versucht möglicherweise, alle Builds in den Speicher zu laden, wenn Sie die Job-Übersichtsseite anzeigen). Um das Problem zu beheben, löschte ich die meisten alten Builds aus den Problemjobs mit dieser Strategie und lud dann die Jenkins neu. Lief wie am Schnürchen!

Ich habe auch das Plugin "alte Builds verwerfen" so eingestellt, dass nur die letzten 50 Builds beibehalten werden, um zu verhindern, dass dies erneut geschieht.

15
Matt Korostoff

Wann immer eine Anfrage eingeht, erzeugt Jenkins einige Threads, um die Anfrage zu bedienen. Nach dem Upgrade von Jenkins war es zu diesem Zeitpunkt möglicherweise mit hoher Drosselung aktiviert. Überprüfen Sie die CPU- und Speicherauslastung des Jenkins-Servers in den folgenden Szenarien:

  • Jenkins ist im Leerlauf und es laufen keine anderen Apps auf dem Server.
  • Geplanter Build und keine anderen Apps werden auf dem Server ausgeführt.

Vergleichen Sie die Verhaltensweisen, die Ihnen dabei helfen könnten, festzustellen, ob Jenkins oder das Ausführen von Jenkins parallel zu anderen Apps Probleme verursachen.

Wie @vlp sagte, versuchen Sie, die Jenkins-Anwendung über JVisualVM mit der Jstad-Konfiguration zu überwachen, um sie einzuhaken. Siehe link , um JvisualVM mit Jstad zu konfigurieren.

3
S.K. Venkat

Ich habe bei der Installation von Jenkins unter Windows 7 Ultimate einige Gründe für die abnormale CPU-Auslastung festgestellt.

  1. Ich hatte kürzlich ein Upgrade von Version 2.138 auf Version 2.140 vorgenommen und ein paar zusätzliche Plugins hinzugefügt. Ich bemerkte ein Problem mit der Jenkins Java-Programmdatei, die jedes Mal, wenn ein Job ausgelöst wurde, bis zu 60% der CPU-Zeit beanspruchte. Keiner der Aufträge war an die CPU gebunden, es wurden lediglich Daten von externen Servern abgerufen, sodass es keinen Sinn machte. Es wurde mit einem einfachen Neustart des Jenkins-Dienstes behoben. Ich gehe davon aus, dass das Upgrade nicht sauber abgeschlossen wurde.

  2. Java Garbage Collection hat bei der Ausführung der Standardspeichereinstellungen Fehler ausgegeben und die CPU belastet. Es war wahrscheinlich übertrieben, aber ich bin wild geworden und habe den Java Heap Space für Jenkins von standardmäßig 256 MB auf 4 GB erhöht. was dieses Problem für mich gelöst hat.

    Anweisungen finden Sie in dieser Lösung: https://stackoverflow.com/a/8122566/4479786

1
verayth

2.5 scheint eine Entwicklungsversion zu sein, während 1.6 ihre Langzeit-Support-Version ist. Daher erscheint es logisch, dass Sie bei der blutenden Edge-Version mit einigen Regressionen rechnen müssen. Die Belohnung für diese Frage ist ein Beweis dafür, dass auch andere Benutzer dies erfahren. Die Lösung besteht darin, einen Fehler im Jenkins Bug Tracker zu melden. Sie können vorübergehend ein Downgrade auf die bekannte gute Version durchführen.

1
hkBst