java jenkins build openstack

java - Jenkins esclavo se desconectó durante la compilación



build openstack (2)

Esclavo de Jenkins desconectado durante la construcción. Como puedo solucionarlo, vi muchas preguntas relacionadas en los problemas de SO y Jenkins, pero nadie dio la solución.

Mi configuración:

Jenkins versión 1.651.1, Zuul versión 2.1.1.dev393 con un Jenkins master (Ubuntu), 2 esclavos (Ubuntu) cada uno tiene 16 GB de RAM Ejecutando compilaciones en paralelo.

Jenkins master, devstack y ambos slave de esclavos están en el mismo rango de IP.

Estoy enfrentando un problema cuando uno de los esclavos completa su construcción, entonces el proceso de Java en ambos esclavos es asesinado para que el otro esclavo se desconecte.

Encontré este problema al enumerar los procesos que se ejecutan en los esclavos y observé que el proceso de Java se mata simultáneamente en ambos esclavos cuando uno de los esclavos completa su construcción y el otro esclavo sigue ejecutando la compilación.

Anteriormente tuve este problema y eso se resolvió cambiando a JDK de Oracle desde Open JDK. Ahora los esclavos están usando Oracle Java 1.8.0_111 pero ahora tenemos el mismo problema con Oracle-java8 también

Registros de compilación:

01:42:07 Slave went offline during the build 01:42:07 ERROR: Connection was broken: java.io.IOException: Unexpected termination of the channel 01:42:07 at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50) 01:42:07 Caused by: java.io.EOFException 01:42:07 at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2351) 01:42:07 at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2820) 01:42:07 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804) 01:42:07 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:302) 01:42:07 at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:48) 01:42:07 at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read( AbstractSynchronousByteArrayCommandTransport.java:34) 01:42:07 at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48) 01:42:07 01:42:07 Build step ''Execute shell'' marked build as failure


Los esclavos se desconectan, ya sea porque

  1. Los trabajos que se ejecutan en él están consumiendo más memoria RAM de la que está teniendo o no tiene memoria.

-Si este es el caso, intente tener menos ejecutores en esclavos o tener más CPU / RAM en nodos.

  1. Es posible que el proceso de limpieza del esclavo se esté ejecutando o que algún proceso huérfano se esté ejecutando hacia atrás, lo que está causando el corte de la conexión.

-Detener el proceso de limpieza o eliminar el proceso huérfano, que está consumiendo la memoria.

  1. Las claves SSH pueden cambiarse entre maestro y esclavos.

-Necesita enviar las claves ssh a los esclavos a través de scp nuevamente y necesita retocar una vez más.

Intente una vez y también lea los artículos a continuación para obtener más ayuda.


Tuve una dificultad similar con las conexiones esclavas de Jenkins en Linux. No comenzarían ni caerían en lugar de estar al ralentí.

Descubrí que el problema era con el shell de Linux y la forma en que manejaba las conexiones remotas.

Después de mucho esfuerzo, mi solución fue:

  • Cree un usuario diferente para Jenkins en las máquinas maestra y esclava.
  • Elimine (rm) los archivos ~ / .bashrc para estos usuarios de Jenkins
  • Rebote los servidores, hecho.

La existencia de los archivos bashrc (incluso vacíos) corrompió el clúster. Esa fue la única solución que haría que los esclavos se federen en nuestro entorno. Los documentos no cubrieron esto.

Se puede imaginar que el "mucho esfuerzo" básicamente rebotaba en el clúster completo con diferentes combinaciones de archivos bashrc hasta que finalmente los borraba por frustración.

El enlance fue Centos y Jenkins CI integrados con IBM ClearCase.

Esperemos que esta solución pueda ayudar a sacudir algo suelto en su problema.