Hola, tenemos la solución a lo que necesitas, continúa leyendo y la encontrarás más abajo.
Solución:
Hay dos tipos de OutOfMemoryError
mensajes que puede encontrar mientras se ejecuta un trabajo de Jenkins:
java.lang.OutOfMemoryError: Heap space
– esto significa que necesita aumentar la cantidad de espacio de almacenamiento dinámico asignado a Jenkins cuando se inicia el demonio.java.lang.OutOfMemoryError: PermGen space
– esto significa que necesita aumentar la cantidad de espacio de generación asignado para almacenar metadatos de objetos Java. Incrementando el valor de la-Xmx
El parámetro no tendrá ningún efecto sobre este error.
En Ubuntu 12.04 LTS, descomente el JAVA_ARGS
poniendo en la línea diez de /etc/default/jenkins
:
- Para agregar más espacio de almacenamiento dinámico de Java, aumente el valor de la
-Xmx
Parámetro Java. Eso establece el tamaño máximo del grupo de asignación de memoria (el montón de basura recolectada). - Para agregar más espacio PermGen, agregue el parámetro
XX:MaxPermSize=512m
(reemplazar512
con otra cosa si quieres más. El montón de generación permanente contiene metainformación sobre las clases de usuario.
Por ejemplo, este extracto es del predeterminado /etc/default/jenkins
después de una nueva instalación de Jenkins:
# arguments to pass to java
#JAVA_ARGS="-Xmx256m"
Así es como se vería si configura el espacio de almacenamiento dinámico en 1 GB:
# arguments to pass to java
JAVA_ARGS="-Xmx1048m"
Tenga cuidado de no establecer un tamaño de almacenamiento dinámico demasiado grande, ya que cualquier cosa que asigne reduce la cantidad de memoria disponible para el sistema operativo y otros programas, lo que podría causar una paginación excesiva (memoria intercambiada entre la RAM y el disco de intercambio, lo que ralentizará su sistema caído).
Si también estableces MaxPermSpace
debe agregar un espacio entre los parámetros):
# arguments to pass to java
JAVA_ARGS="-Xmx1048m -XX:MaxPermSize=512m"
Después de realizar un cambio, reinicie Jenkins correctamente desde la interfaz web de Jenkins, o fuerce un reinicio inmediato desde la línea de comandos con sudo /etc/init.d/jenkins restart
.
Encontré el siguiente sitio útil para comprender los tamaños de montón de generación permanente y máxima de Java: http://www.freshblurbs.com/blog/2005/05/19/explaining-java-lang-outofmemoryerror-permgen-space.html.
Para CentOS, el directorio en el que se encuentra Jenkins.xml de forma predeterminada es /etc/sysconfig/ para jenkins-1.579-1.1
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xmx -XX:MaxPermSize="
Si está utilizando Ubuntu Server, primero instale el complemento de Monitoreo para ver cuánta memoria está usando Jenkins. Por ejemplo, esto es lo que vi después de instalarlo:
Entonces, con el comando free -m
, descubrí cuál era el tamaño de la memoria del servidor. En mi caso, 16Gb. Con esa información, abrí /etc/default/jenkins
y cambiado:
JAVA_ARGS="-Djava.awt.headless=true"
a
JAVA_ARGS="-Xmx8384m -Djava.awt.headless=true"
Donde 8384 es 8Gb. Luego reinicié Jenkins con el comando sudo service jenkins restart
y luego, después de activar el trabajo que estaba teniendo problemas de memoria, las cosas se veían mucho mejor y el trabajo podría completarse en esta ejecución y en las siguientes:
Comentarios y valoraciones del artículo
Al final de todo puedes encontrar las notas de otros sys admins, tú asimismo tienes la habilidad mostrar el tuyo si lo deseas.