Cómo arreglar el Jenkins OutofMemoryError

Cómo arreglar el Jenkins OutofMemoryError
Uno de los errores más destacados al trabajar con Jenkins es el error OutOfMemory. Este tutorial discute por qué este error puede aparecer en sus Jenkins y cómo solucionarlo.

¿Cuál es el outOfMemoryError??

Un "outOfMemoryError" en Java es un error que ocurre cuando la máquina virtual Java (JVM) no tiene suficiente memoria disponible para ejecutar una operación dada correctamente.

Puede ser causado por varias razones como:

  1. El JVM se ha configurado con un pequeño tamaño de montón máximo. Por lo tanto, cuando una aplicación que se ejecuta en el JVM necesita más tamaño de montón que el tamaño máximo establecido, falla, lo que lleva a OutOfMemoryError.
  2. La aplicación tiene una posible fuga de memoria, lo que hace que retenga más y más memoria con el tiempo.

Para resolver un outOfMemoryError, necesitamos identificar la causa del error y tomar una acción apropiada.

Sin embargo, esto es demasiado amplio y puede aplicar a cualquier aplicación que se ejecute en el JVM. Analicemos lo que puede causar un OutOfMemoryError en Jenkins.

Causas de OutOfMemoryError en Jenkins

En el contexto del clúster Jenkins, hay cuatro causas principales de este error. Incluyen lo siguiente:

  1. Aumento del tamaño de datos de Jenkins. A medida que aumenta el tamaño de sus datos en su instancia de Jenkins, la aplicación también requiere un tamaño de montón más grande.
  2. Jenkins podría procesar temporalmente una gran cantidad de datos.
  3. Potencial filtración de memoria en Jenkins.
  4. El kernel del sistema host se está quedando sin memoria virtual.

Diagnóstico de la causa principal del outOfMemoryError en Jenkins

Establecimos cuatro causas potenciales de este tipo de error en Jenkins. ¿Cómo reducimos la causa principal de este error??

En tal caso, podemos usar una herramienta como VisualVM que nos permite visualizar el uso de memoria del JVM en nuestro sistema.

Esta herramienta puede identificar la causa principal del OutOfMemoryError cuando se trabaja con Jenkins.

Navegue al siguiente enlace y descargue la última versión de su máquina de la herramienta VisualVM.

https: // VisualVM.github.IO/

Una vez descargado, ejecute la aplicación y seleccione "local" para ver el uso de JVM en su máquina local.

Esto debería mostrarle los detalles de su sistema, incluida la memoria física disponible, la memoria de intercambio y más.

Para determinar la causa de este error, detenga a Jenkins y comience nuevamente mientras monitorea el uso de la memoria JVM en su máquina local.

Si el uso de la memoria maximiza mientras comienza a Jenkins, la causa es un tamaño de montón pequeño.

Sin embargo, si el uso de la memoria aumenta lentamente, esta puede ser una posible fuga de memoria en su versión de Jenkins.

Si Jenkins usa toda la memoria virtual disponible, el núcleo del host se está quedando sin memoria virtual. Puede solucionar esto aumentando la memoria virtual disponible o terminando las compilaciones de Jenkins en ejecución.

Cómo configurar el tamaño del montón para el JVM

Si se enfrenta al OutOfMemoryError debido a un pequeño tamaño de montón, la solución es solo para asignar un tamaño de montón más grande.

Podemos configurar el tamaño de montón inicial y máximo de JVM utilizando los parámetros -xms y -xmx.

Nota: Se recomienda establecer el mismo valor para -xms y XMX para el JVM.

Aunque el tamaño del montón suficiente puede variar según los recursos del sistema disponibles y la carga de trabajo de Jenkins, se recomienda establecer el tamaño del montón en 2 GB (mínimo) y 16 GB (máximo).

Puede aumentar el tamaño del montón para Jenkins en Linux. Puede editar el servicio de inicio de Jenkins con el siguiente comando:

$ sudo systemctl editar jenkins

También puede editar el archivo de servicio manualmente, como se muestra en lo siguiente:

sudo vim/usr/lib/systemd/system/jenkins.servicio

Localice la opción Java_opts y agregue las opciones -xms y -xmx como se muestra en lo siguiente:

Ambiente = "java_opts = -djava.awt.Headless = True -xms1g -xmx1g "

Agregar las opciones anteriores aumenta el tamaño de la memoria del montón a 1 GB. Una vez completado, puede reiniciar el servicio Jenkins de la siguiente manera:

$ sudo systemctl reiniciar jenkins

Puede aumentar los valores -xms y XMX para Jenkins en Windows editando el archivo de configuración.

De manera predeterminada, el archivo de configuración se encuentra en c: \ archivos de programa \ jenkins \ jenkins.xml.

Edite el bloque de argumentos del archivo XML como se muestra en el siguiente:

Una vez editado, guarde el archivo y reinicie el servicio Jenkins.

Conclusión

Descubriste la causa del outOfMemoryError cuando trabajas con Jenkins. También aprendió a solucionar problemas de las diversas causas de este error. Finalmente, ahora aprendió los múltiples métodos para solucionarlo.