He notado un par de razones para el uso anormal de la CPU con mi instalación de Jenkins en Windows 7 Ultimate.
-
Recientemente actualicé de v2.138 a v2.140 y agregué algunos complementos adicionales. Empecé a notar un problema con el ejecutable Java de Jenkins, que ocupaba hasta el 60 % del tiempo de mi CPU cada vez que se activaba un trabajo. Ninguno de los trabajos estaba vinculado a la CPU, solo tomaba datos de servidores externos, por lo que no tenía ningún sentido. Se solucionó con un simple reinicio del servicio Jenkins. Supongo que la actualización simplemente no terminó limpiamente.
-
Java Garbage Collection arrojaba errores y acaparaba la CPU cuando se ejecutaba con la configuración de memoria predeterminada. Probablemente fue una exageración, pero me volví loco y aumenté el Java Heap Space para Jenkins de los 256 mb predeterminados a 4 gb; que resolvió este problema para mí.
Consulte esta solución para obtener instrucciones:https://stackoverflow.com/a/8122566/4479786
Al final resultó que, mi problema era que varios trabajos tenían miles de compilaciones antiguas. Esto estaba bien en Jenkins 1.6 pero es un problema en 2.5 (supongo que tal vez Jenkins intente cargar todas las compilaciones en la memoria cuando vea la página de descripción general del trabajo). Para solucionarlo, simplemente eliminé la mayoría de las compilaciones antiguas de los trabajos problemáticos usando esta estrategia y luego recargué jenkins. ¡Funcionó de maravilla!
También configuré el complemento "descartar compilaciones antiguas" para mantener solo las 50 compilaciones más recientes, para evitar que esto vuelva a suceder.
Cada vez que llega una solicitud, Jenkins generará algunos hilos para atender la solicitud. Después de actualizar Jenkins, podría haberse invocado a máxima potencia en ese momento. Por favor, compruebe el uso de la CPU y la memoria del servidor Jenkins en los siguientes escenarios:
- Jenkins está inactivo y no hay otras aplicaciones ejecutándose en el servidor.
- Programó una compilación y no hay otras aplicaciones ejecutándose en el servidor.
Y compare los comportamientos que podrían ayudarlo a determinar si Jenkins o ejecutar jenkins en paralelo con otras aplicaciones realmente está causando problemas.
Como dijo @vlp, intente monitorear la aplicación jenkins a través de JVisualVM con la configuración de Jstad para conectarse. Consulte este enlace para configurar JvisualVM con Jstad.