Pregunta

Usamos hudson como un sistema de integración continua para ejecutar compilaciones automatizadas (cada noche y basadas en encuestas CVS) de muchos de nuestros proyectos.

Algunos proyectos sondean CVS cada 15 minutos, otros sondean cada 5 minutos y algunos sondean cada hora.

Cada pocas semanas obtendremos una compilación que falla con el siguiente resultado:

FATAL: java.io.IOException: Too many open files
java.io.IOException: java.io.IOException: Too many open files
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)

La siguiente compilación siempre funcionó (con 0 cambios), por lo que siempre lo anotamos como 2 trabajos de compilación que se ejecutaban al mismo tiempo y tenían demasiados archivos abiertos durante el proceso.

Este fin de semana tuvimos un error de compilación el viernes por la noche (compilación nocturna automática) con el mensaje y también fallaron todas las demás compilaciones nocturnas.De alguna manera, esto impulsó a Hudson a construir continuamente todos los proyectos que fallaban hasta que se resolvía el problema.Esto resultó en una compilación cada 30 minutos aproximadamente de cada proyecto hasta el sábado por la noche, cuando el problema desapareció mágicamente.

¿Fue útil?

Solución

Este es el número 715 de Hudson (http://issues.hudson-ci.org/browse/HUDSON-715).La recomendación actual es establecer el 'número máximo de subprocesos de sondeo simultáneos' para mantener baja la actividad de sondeo.

Otros consejos

Ver https://wiki.jenkins-ci.org/display/JENKINS/I%27m+getting+too+many+open+files+error por lo que necesitamos de usted para solucionar este tipo de problema.

¿Cambiar los límites del sistema para los descriptores máximos de archivos abiertos por proceso?Como en ulimit -n para el proceso de Java?

Experimenté este problema con otra aplicación Java que se ejecuta en Debian, desapareció cuando bajamos a la versión 1.6.0.0 de Java.Java nunca cerró conexiones no utilizadas, lo que provocó que se lanzara la excepción.

Uno de los problemas más comunes que causan "Demasiados archivos abiertos" es tener habilitado y configurado el complemento de Active Directory en Jenkins.Hay problemas conocidos con este complemento que provocan que aparezca una enorme cantidad de subprocesos y también el error "Demasiados archivos abiertos" en los registros.Después de deshabilitarlo y cambiar a la autenticación LDAP, ya no sentí que Jenkins se bloqueara.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top