¿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:
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:
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.