Ho notato un paio di motivi per l'utilizzo anomalo della CPU con la mia installazione di Jenkins su Windows 7 Ultimate.
-
Di recente ho eseguito l'aggiornamento dalla v2.138 alla v2.140 e ho aggiunto alcuni plug-in aggiuntivi. Ho iniziato a notare un problema con l'eseguibile java di Jenkins che impiegava fino al 60% del tempo della mia CPU ogni volta che si attivava un lavoro. Nessuno dei lavori era legato alla CPU, si limitava a raccogliere dati da server esterni, quindi non aveva alcun senso. È stato risolto con un semplice riavvio del servizio Jenkins. Presumo che l'aggiornamento non sia stato completato correttamente.
-
Java Garbage Collection generava errori e bloccava la CPU durante l'esecuzione con le impostazioni di memoria predefinite. Probabilmente è stato eccessivo, ma sono impazzito e ho aumentato Java Heap Space per Jenkins dai 256 MB predefiniti a 4 GB; che ha risolto questo problema per me.
Consulta questa soluzione per istruzioni:https://stackoverflow.com/a/8122566/4479786
Come si è scoperto, il mio problema era che diversi lavori avevano migliaia di vecchie build. Questo andava bene in Jenkins 1.6 ma è un problema in 2.5 (immagino che forse Jenkins provi a caricare tutte le build in memoria quando visualizzi la pagina di panoramica del lavoro). Per risolverlo, ho appena eliminato la maggior parte delle vecchie build dai lavori problematici utilizzando questa strategia e quindi ricaricato jenkins. Ha funzionato a meraviglia!
Ho anche impostato il plug-in "scarta vecchie build" per conservare solo le 50 build più recenti, per evitare che ciò accada di nuovo.
Ogni volta che arriva una richiesta, Jenkins genererà alcuni thread per servire la richiesta. Dopo aver aggiornato Jenkins, in quel momento potrebbe essere stato invocato ad alta velocità. Plz controlla l'utilizzo della CPU e della memoria del server Jenkins durante i seguenti scenari :
- Jenkins è inattivo e nessun'altra app è in esecuzione sul server.
- È stata pianificata una build e nessun'altra app è in esecuzione sul server.
E confronta i comportamenti che potrebbero aiutarti a determinare se Jenkins o l'esecuzione di jenkins in parallelo con altre app stanno davvero creando problemi.
Come ha detto @vlp, prova a monitorare l'applicazione jenkins tramite JVisualVM con la configurazione Jstad per collegarti. Fai riferimento a questo link per configurare JvisualVM con Jstad.