2016-05-19 31 views
9

Recentemente ho aggiornato da Jenkins 1.6 a 2.5. Dopo averlo fatto, ho notato un utilizzo della CPU molto elevato, a volte superiore al 300% (ci sono solo 4 core, quindi non penso che potrebbe superare il 400%). Io non sono sicuro da dove cominciare il debug questo, but here's a thread dump e alcuni screenshot dall'alto/htopJenkins con un utilizzo della CPU molto elevato

htop htop

superiore: top

+0

Hai aggiornato tutti i plug-in? –

+3

La creazione di profili con [visualvm] (https://visualvm.java.net/profiler.html) potrebbe rivelare qualcosa – vlp

risposta

8

Come si è scoperto, il mio problema era che diversi lavori avevano migliaia di vecchie costruzioni. Questo andava bene in Jenkins 1.6 ma è un problema in 2.5 (suppongo che forse Jenkins cerchi di caricare tutte le build in memoria quando si visualizza la pagina di panoramica del lavoro). Per risolvere il problema, ho appena eliminato la maggior parte delle vecchie versioni dai lavori problematici using this strategy e poi ho ricaricato Jenkins. Ha funzionato come un fascino!

Ho anche impostato il plug-in "scarti vecchi build" per conservare solo le 50 build più recenti, per evitare che ciò accada di nuovo.

1

2,5 sembra essere una versione di sviluppo, mentre 1.6 è la loro versione di supporto a lungo termine. Quindi sembra logico che dovresti aspettarti delle regressioni quando usi la versione con bordo sanguinante. La generosità di questa domanda è la prova che anche altri utenti lo stanno vivendo. La soluzione è segnalare un bug sul bug tracker di Jenkins. È possibile effettuare il downgrade temporaneo alla versione conosciuta per ora.

3

Ogni volta che arriva una richiesta, Jenkins genera alcuni thread per soddisfare la richiesta. Dopo aver aggiornato Jenkins, avrebbe potuto invocare a tutto gas in quel momento. Plz controllare l'utilizzo della CPU e della memoria del server di Jenkins, mentre i seguenti scenari:

  • Jenkins è inattivo e non altre applicazioni sono in esecuzione sul server.
  • Pianificato una compilazione e nessun'altra app è in esecuzione sul server.

e confronta i comportamenti che potrebbero aiutare a determinare se Jenkins o Jenkins che funzionano in parallelo con altre applicazioni stanno davvero facendo guai.

Come @vlp ha detto, provare a monitorare l'applicazione jenkins tramite JVisualVM con la configurazione Jstad da collegare. Fare riferimento a questo link per configurare JvisualVM con Jstad.

+0

Ulteriori informazioni con questa risposta, Se stai pianificando e eseguendo lavori sul server stesso, anche questo potrebbe causare un carico sul sistema . Quindi devi scaricare il server jenkins da quei lavori e spostarlo su nodi slave e mantenere il valore dell'esecutore come 0 nella configurazione del nodo per il server. –