Configuración y comprobación del entorno Linux
Los sistemas operativos Linux® sufren un gran número de parches y actualizaciones.
El personal de IBM® no puede probar la máquina virtual Java en cada parche. La intención es realizar pruebas en los releases más recientes de unas pocas distribuciones. En general, debe mantener los sistemas actualizados, con los últimos parches. Para obtener las últimas renovaciones y ver las listas de arreglos, consulte las páginas de soporte de Java SDK.
Directorio de trabajo
El directorio de trabajo actual del proceso de VM Java es la ubicación predeterminada para la generación de archivos principales, volcados Java™ , volcados de almacenamiento dinámico y las salidas de rastreo de VM Java, incluido el rastreo de aplicación y el rastreo de método. Debe disponer de suficiente espacio en disco libre para este directorio. Asimismo, la máquina virtual Java debe tener permisos de escritura.
Cuando se produce un bloqueo, los datos de diagnóstico más importantes que deben obtenerse son el volcado del sistema. Para asegurarse de que se genera esta archivo, debe comprobar los siguientes valores.
- Valores del sistema operativo
Los valores del sistema operativo deben ser correctos. Estos valores pueden variar según la distribución y la versión de Linux .
Para obtener los archivos clase Core completos, establezca las siguientes opciones ulimit:ulimit -c unlimited turn on corefiles with unlimited size ulimit -n unlimited allows an unlimited number of open file descriptors ulimit -m unlimited sets the user memory limit to unlimited ulimit -f unlimited sets the file size to unlimitedPara obtener más información sobre los valores de
ulimit, consulte Configuración del sistema en la documentación de usuario de OpenJ9 .A partir de Java 5, el valor
ulimit -cpara el límite flexible se ignora y el valor de límite fijo se utiliza para ayudar a garantizar la generación del archivo principal.Las herramientas de Linux como, por ejemplo, la herramienta Automatic Bug Reporting Tool (ABRT) y la herramienta Apport utilizan valores del archivo Linux /proc/sys/kernel/core_pattern para redirigir archivos principales a un programa de diagnóstico. Estas herramientas y los valores del archivo /proc/sys/kernel/core_pattern que utilizan pueden impedir que la JVM genere correctamente los volcados del sistema. Las herramientas están habilitadas de forma predeterminada en algunas distribuciones de Linux. Puede ver este mensaje de error:
Revise la configuración de estas herramientas o considere la posibilidad de inhabilitar las herramientas si se producen problemas al intentar generar volcados del sistema desde la máquina virtual Java.JVMPORT030W "proc/sys/kernel/core_pattern setting ..... specifies that the core dump is to be piped to an external program. Attempting to rename either core or core.<pid>- valores de la máquina virtual Java
Para generar archivos clase Core cuando se produce un bloqueo, compruebe que la máquina virtual Java esté establecida para ello.
Ejecute java -Xdump:what, que debe producir la siguiente salida:
Estos valores son los valores predeterminados. Al menos debe establecerse-Xdump:system: events=gpf+abort+traceassert+corruptcache, label=/mysdk/sdk//jrebin/core.%Y%m%d.%H%M%S.%pid.dmp, range=1..0, priority=999, request=serialevents=gpfpara generar un archivo principal cuando se produzca un bloqueo. Puede cambiar y establecer opciones con la opción de línea de mandatos -Xdump:system[:name1=value1,name2=value2 ...]- Espacio de disco disponible
El espacio en disco disponible debe ser lo suficientemente grande como para que el archivo clase Core se pueda escribir.
La JVM permite escribir el archivo principal en cualquier directorio especificado en la opciónlabel. Por ejemplo:
Para escribir el archivo principal en esta ubicación, el espacio de disco debe ser suficiente (es posible que se necesiten hasta 4 GB para un proceso de 32 bits) y los permisos correctos para que el proceso Java grabe en esa ubicación.-Xdump:system:label=/mysdk/sdk/jre/bin/core.%Y%m%d.%H%M%S.%pid.dmp
ZipException o IOException en Linux
java.util.zip.ZipException: error in opening .zip file" o algún otro tipo de IOException que indique que no se ha podido abrir un archivo. La solución es aumentar el suministro para los descriptores de archivo mediante el mandato ulimit. Para encontrar el límite actual de los archivos abiertos, utilice el mandato:ulimit -aPara permitir más archivos abiertos, utilice el mandato:ulimit -n 8196Linux en zSeries
Si está ejecutando Java 7 en zLinux en zVM en el hardware z10 , debe utilizar zVM Versión 5 Release 2 o posterior. Si utiliza versiones anteriores de zVM, no conseguirá las ventajas de rendimiento disponibles con DFP.Bibliotecas de hebras
Las distribuciones soportadas por IBM Java VM proporcionan la biblioteca de hebras POSIX nativa mejorada para Linux (NPTL).
Puede descubrir la versión glibc cambiando al directorio /lib y ejecutando el archivo libc.so.6. El mandato ldd de Linux imprime información que debería ayudarle a averiguar las dependencias de biblioteca compartida de la aplicación.
Uso de los límites de tiempo de CPU para controlar tareas consecutivas
Como las hebras en tiempo real se ejecutan con prioridades altas y con planificación FIFO, las aplicaciones fallidas (normalmente con bucles relacionados con la CPU ajustados) podrían hacer que el sistema no respondiese. En un entorno de desarrollo puede ser útil garantizar que las tareas consecutivas se eliminen limitando la cantidad de CPU que tales tareas podrían consumir. Consulte #linux_setup__linux_core_files para ver una discusión sobre los valores de límite flexible y estricto.El mandato ulimit -t lista el valor de tiempo de espera actual en segundos de CPU. Este valor se puede reducir con valores flexibles, por ejemplo, ulimit -St 900 para establecer el tiempo de espera flexiblea 15 minutos o valores fijos para detener las tareas descontroladas.