2017-12-15 3 views
0

Derzeit, wenn wir versucht, Jenkins konfigurieren Seite zu öffnen, dauert es rund 45 Sekunden während für andere Seiten wie eine Ansicht eines Auftrags anfordern oder Blick in eine Konsole Ausgabe dauert weniger als 3 Sekunden. Basierend auf Thread-Dumps analysiert Ergebnis wir haben eine CPU ‚Spike‘ mit asdescriptionLaden Jenkins Job Konfigurieren der Seite ist langsam ohne laufende Jobs

„Ihre Anwendung von hohem CPU leiden könnte.“ am Gewinde Bericht Blick sehen wir blockierten Status, sondern ein Verdächtiger Status nicht: „1 Faden ist unendlich Looping: DestroyJavaVM“

Leider sind wir nicht in der Lage, die Ursache dieser hohen CPU zu identifizieren und wahrscheinlich die zugehörige Endlosschleife.

Bisher haben wir bereits einige Schritte unternommen, um die Leistung durch den Neustart von Jenkins zu verbessern, es ergibt sich 10 Sekunden schneller von 55 Sekunden auf 45 Sekunden. Wir definieren JVM min/max Speicherparameter als die gleichen und erhöhen den Hype auf 4 Gb, es gibt keinen Einfluss. Wir erstellen eine saubere Test Jenkins-Instanz mit der gleichen Jenkins-Version, die gleichen installierten Plugins und Job-Konfiguration auf niedrigeren Hardware-Spezifikationen mit dem gleichen Betriebssystem. Die Auslastung der Job-Konfigurationsseite in der neuen Jenkins-Test-Instanz beträgt weniger als 3 Sekunden. Wir sind nicht sicher, ob wir die installierten Plugins aufgrund dieses Tests als Hauptproblem ausschließen können.

Alle anderen Vorschläge sind willkommen, um die Probleme zu verfolgen.

ThreadDump Analyse Report

Wir verwenden: - Windows Server 2008 R2 Enterprise sp1 - Jenkins (Master): Version 2.89.1 - Java: JRE 1.8.0_112 - Client-Web-Browser Google Chrome Version 61.0.3163.100 (Offizielle Version) (64-bit) Installierte Plugins: Ant Plugin - 1.7 Apache HttpComponents Client 4.x API Plugin - 4.5.3-2.0 Artifactory Plugin - 2.13.1 Authentifizierungstoken API Plu Gin - 1.3 Autofavorite für Blue Ocean - 1.2.1 Bitbucket Niederlassung Quelle Plugin - 2.2.7 Bitbucket Pipeline für Blue Ocean - 1.3.4 Blue Ocean - 1.3.4 Blue Ocean Pipeline-Editor - 1.3.4 bouncycastle API Plugin - 2.16.2 Branch API Plugin - 2.0.15 build-name-setter - 1.6.7 Gemeinsame API für Blue Ocean - 1.3.4 Bedingter BuildStep - 1.3.6 Config API für Blue Ocean - 1.3.4 Config-Datei-Provider-Plugin - 2.16.4 Kopieren von Artefakt-Plugin - 1.39 Anmeldeinformation Binding-Plugin - 1.13 Credentials-Plugin - 2.1.16 anpassen Bauen Jetzt Beschriften - 1.1 CVS-Plug-in - 2.13 Armaturenbrett für Blue Ocean - 1.3.4 Dashboard anzeigen - 2.9.11 Verwerfen Alt-Plugin bauen - 1.05 Disk-Nutzung Plugin - 0.28 Anzeige Upstream Änderungen - 0,3 .2 Anzeige URL API - 2.2.0 Anzeige URL für Blue Ocean - 2.2.0 Docker Commons Plugin - 1.9 Docker Pipeline - 1.14 Durable Task-Plugin - 1,17 EnvInject API Plugin - 1.4 Umwelt Injector Plugin - 2.1.5 Events API für Blue Ocean - 1.3.4 externen Monitor Jobtyp Plugin - 1.7 Lieblings - 2.3.1 Folders Plugin - 6.2 0,1 Git-Client-Plugin - 2.6.0 Git Pipeline für Blue Ocean - 1.3.4 Git-Plugin - 3.6.4 GIT-Server Plugin - 1.7 GitHub API Plugin - 1.90 GitHub Zweig Quelle Plugin - 2.3.1 GitHub Pipeline für Blue Ocean - 1.3.4 GitHub Plugin - 1.28.1 Gradle Plugin - 1.28 HTML Publisher Plugin - 1.14 i18n für Blue Ocean - 1.3.4 Icon Shim Plugin - 2.0.3 Ivy Plugin - 1,28 Jackson 2 API Plugin - 2.8.7.0 Javadoc Plugin - 1.4 JavaScript GUI Lib: ACE Editor Bundle plugin - 1.1 JavaScript GUI Lib: Lenker Bündel Plugin - 1.1.1 JavaScript GUI Lib: jQuery Bundles (jQuery und jQuery UI) plugin - 1.2.1 JavaScript GUI Lib: Moment.js Bundle Plugin - 1.1.1 JIRA Integration für Blue Ocean - 1.3.4 JIRA plugin - 2.5 Job Konfigurationshistorie Plugin - 2.18 jQuery plugin - 1.12.4-0 JSch Abhängigkeit pl ugin - 0.1.54.1 JUnit Plugin - 1,23 JWT für Blue Ocean - 1.3.4 LDAP Plugin - 1.18 Locale Plugin - 1.2 Mailer Plugin - 1.20 Managed Scripts - 1.4 MapDB API Plugin - 1.0.9.0 Matrix Authorization Strategie Plugin - 2.2 Matrix Projekt Plugin - 1.12 Maven Integration Plugin - 3.0 Mercurial Plugin - 2.2 Metrics Disk Usage Plugin - 3.0.0 Metrics Plugin - 3.1.2.10 Monitoring - 1.70.0 MSBuild Plugin - 1,28 MSTest plugin - 0.23 NAnt Plugin - 1.4. Dependency-Check 3 OWASP Plugin - 3.0.2 OWASP Markup Formatter Plugin - 1.5 PAM-Authentifizierung-Plugin - 1.3 Parameterized Trigger-Plugin - 2.35.2 Personalisierung für Blue Ocean - 1.3.4 Pipeline - 2.5 Pipeline Graph Analysis Plugin - 1.5 Pipeline-Implementierung für Blue Ocean - 1.3.4 Pipeline SCM API für Blue Ocean - 1.3.4 Pipeline-Dienstprogramm Schritte - 1.5.1 Pipeline: API - 2,24 Pipeline: Grundlegende Schritte - 2.6 Pipeline: Schritt beim Aufbau - 2.5.1 Pipeline: Deklarativ - 1.2.5 Pipeline: Declarative Agent API - 1.1.1 Pipeline: deklarative Erweiterungspunkte API - 1.2.5 Pipeline: Groovy - 2,42 Pipeline: Eingang Schritt - 2.8 Pipeline: Job - 2.15 Pipeline: Meilenstein für Schritt - 1.3.1 Pipeline: Model API - 1.2.5 Pipeline mehrfach verzweigten - 2,16 Pipeline:: Knoten und Prozesse - 2,17 Pipeline: REST API Plugin - 2.9 Pipeline: SCM Schritt - 2.6 Pipeline: Geteilt Groovy Bibliotheken - 2.9 Pipeline: Phase Step - 2.3 Pipeline: Stufe Schlagwörter Metadaten - 1.2 .5 Pipeline: Stage View Plugin - 2.9 Pipeline: Step API - 2.14 Pipeline: - traduce 2,16 Plain Credentials - Unterstützung APIs 1.4 Plugin Verwendung - Plugin - 0,3 PostBuildScript Plugin - 2.2.1 Power Plugin - 1.3 gefördert baut Plugin - 2,31 Pub-Sub "light" Bus - 1.12 Quality Gates Plugin - 2.5 Rebuilder - 1.27 Ressourcen Disposer Plugin - 0,8 REST-API für Blue Ocean - 1.3.4 REST-Implementierung für Blue Ocean - 1.3.4 rollenbasierte Berechtigungsstrategie - 2.6.1 Run Zustand Plugin - 1.0 SCM API Plugin - 2.2.5 Skript-Sicherheits-Plugin - 1.36 Server Events Sent (SSE) Gateway-Plugin - 1.15 einfaches Thema Plugin - 0,3 Sonarqube Scanner für Jenkins - 2.6.1 SSH Credentials Plugin - 1.13 Static Analysis Utilities - 1,93 Structs Plugin - 1.10 Subversion Plugin - 2.9 Team Foundation Server Plugin - 5.126.0 Gas Concurrent baut Plugin - 2.0.1 Timestamper - 1.8.8 Token Macro Plugin - 2.3 Variant Plugin - 1.1 Web für Blue Ocean - 1.3.4 Windows Slaves Plugin - 1.3.1 Arbeitsbereich Bereinigung Plugin - 0.34

+0

Wird eine einzelne jenkins-Instanz in einer VM ausgeführt?Wie viele Jenkins-Builds gibt es? Was sind die Hardware-Spezifikationen für die VM (z. B. Speicher, CPU usw.)? – grizzthedj

Antwort

0

Zuerst beantworten diese Fragen für sich selbst:

  • Gibt es andere intensive CPU-Prozesse auf dem gleichen Server Jenkins läuft?

  • Große CPU-Lasten können auch durch hohe IO entstehen, wie ist die Festplatte IO?

  • Eine JVM, wenn die Box zu wenig RAM und Paging hat, wird wahrscheinlich die CPU-Auslastung erhöhen und somit die Anwendungsleistung beeinträchtigen.

Ihre Schritte zur Fehlerbehebung sollte also sein:

  • Sie Ihre CPU-Unterstützung Multithreading? Wenn es Singlethread ist und Sie mehr als einen Thread starten, könnte dies das Ergebnis sein.

  • Finden Sie die durchschnittliche CPU-Auslastung für jeden Prozess, ist alles andere CPU-Zyklen auffressen (das sollte nicht sein.)

  • Gesamtverbrauch RAM.

  • Festplatten-IO-Leistungsmesswerte - sehen Sie Spitzen in IO, wenn Sie sie nicht erwarten?

  • Identifizieren Sie die untergeordneten Prozesse, die von Jenkins initiiert wurden - ermitteln Sie die durchschnittliche Ressourcenauslastung für jeden Prozess. Sind Überlastung diese alle Ressourcen (CPU, RAM, Festplatte IO?)

Basierend auf, was Sie finden, sollten Sie stimmen Sie Ihre Box und Ihre Prozesse entsprechend. Dies könnte bedeuten, Ressourcen hinzuzufügen.

Verwandte Themen