Je suis récemment passé de Jenkins 1.6 à 2.5. Après cela, j’ai remarqué une utilisation très élevée du processeur, parfois plus de 300% (il n’ya que 4 cœurs, donc je ne pense pas qu’elle pourrait dépasser 400%). Je ne sais pas par où commencer pour déboguer ceci, mais voici un vidage de threads et quelques captures d'écran de top/htop
En fin de compte, mon problème était que plusieurs emplois comportaient des milliers d'anciennes constructions. Cela fonctionnait bien dans Jenkins 1.6, mais c’est un problème dans la version 2.5 (je suppose que Jenkins essaie peut-être de charger toutes les versions en mémoire lorsque vous affichez la page d’aperçu des tâches). Pour résoudre ce problème, je viens de supprimer la plupart des anciennes versions des travaux problématiques en utilisant cette stratégie puis de recharger jenkins. Travaillé comme un charme!
J'ai également paramétré le plug-in "Discard old builds" pour ne conserver que les 50 versions les plus récentes, afin d'éviter que cela ne se reproduise.
Chaque fois qu'une requête arrive, Jenkins créera des threads pour servir la requête. Après la mise à niveau de Jenkins, il aurait peut-être été appelé à haute vitesse à ce moment-là. Plz vérifier l'utilisation du processeur et de la mémoire du serveur Jenkins dans les scénarios suivants:
- Jenkins est inactif et aucune autre application ne s'exécute sur le serveur.
- Planifié une construction et aucune autre application ne s'exécute sur le serveur.
Et comparez les comportements qui pourraient vous aider à déterminer si Jenkins ou l'exécution de Jenkins en parallèle avec d'autres applications posent réellement problème.
Comme @vlp l'a dit, essayez de surveiller l'application Jenkins via JVisualVM avec la configuration Jstad à connecter. Reportez-vous à ce link pour configurer JvisualVM avec Jstad.
J'ai remarqué plusieurs raisons pour une utilisation anormale du processeur avec mon installation de Jenkins sous Windows 7 Ultimate.
Je venais de passer de la v2.138 à la v2.140 et d’ajouter quelques plugins supplémentaires. J'ai commencé à remarquer un problème avec l'exécutable Java de Jenkins prenant jusqu'à 60% de mon temps processeur à chaque déclenchement d'un travail. Aucun des travaux n’était lié au processeur, il suffisait de récupérer des données de serveurs externes, ce qui n’avait donc aucun sens. Il a été corrigé avec un simple redémarrage du service Jenkins. Je suppose que la mise à niveau ne s'est pas terminée proprement.
Java Garbage Collection générait des erreurs et bloquait le processeur lors de l'exécution avec les paramètres de mémoire par défaut. C'était probablement exagéré, mais je me suis déchaîné et j'ai augmenté l'espace Java Heap pour Jenkins de 256 Mo à 4 Go par défaut; qui a résolu ce problème pour moi.
Voir cette solution pour obtenir des instructions: https://stackoverflow.com/a/8122566/4479786
2.5 semble être une version de développement, alors que 1.6 est leur version de support à long terme. Il semble donc logique d’attendre des régressions lors de l’utilisation de la version Edge saignante. La prime sur cette question est la preuve que d’autres utilisateurs le ressentent également. La solution consiste à signaler un bogue sur le traqueur de bogues Jenkins. Vous pouvez revenir temporairement à la bonne version connue pour le moment.