Solución de problemas de conexión
Revise la siguiente información para resolver los problemas de conexión con la instancia de Oracle Linux en Oracle Cloud Infrastructure.
El inicio de sesión en una instancia de Oracle Linux falla con un error "fork: reintentar: recurso no disponible temporalmente"
El error fork failed: Resource temporalmente unavailable en Oracle Linux suele indicar que el sistema no puede crear nuevos procesos debido a limitaciones de recursos, como una tabla de procesos completa, memoria insuficiente o que se han alcanzado los límites del usuario o del sistema.
Causas potenciales
- Se han alcanzado los límites de recursos del sistema o del usuario
- Un usuario puede tener un límite en el número de procesos que puede crear o en el número de archivos abiertos que puede tener. O bien, es posible que el sistema no pueda crear nuevos procesos porque se está quedando sin recursos o porque ha alcanzado su número máximo de procesos.
- Memoria insuficiente del sistema o espacio de intercambio
- Es posible que el sistema no tenga suficiente memoria o espacio de intercambio para asignar a nuevos procesos.
- Un servicio o proceso que no se comporta correctamente
- Un proceso o servicio fuera de control podría estar consumiendo recursos excesivos, lo que impediría que se iniciaran nuevos procesos.
- Hay demasiados descriptores de archivo abiertos
- Es posible que el sistema no pueda abrir nuevos archivos porque ha alcanzado el número máximo de descriptores de archivos abiertos.
- Error o configuración incorrecta en el archivo
/etc/security/limits.conf - Si el archivo
limits.confno está configurado correctamente, es posible que no se apliquen valores más grandes y que una cuenta de usuario alcance un límite por defecto que active el error.
Solución de problemas
- Supervisar el uso de recursos e identificar y detener procesos innecesarios para liberar memoria y espacio de intercambio
- Utilice
topovmstatpara identificar procesos que consumen mucha CPU o memoria, por ejemplo:$ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 12607316 4336 2737552 0 0 109 302 182 267 3 1 96 0 0 $ top top - 16:04:04 up 1:07, 2 users, load average: 0.01, 0.13, 0.10 Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.2 sy, 0.2 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15700.7 total, 12305.2 free, 717.2 used, 2678.4 buff/cache MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 14673.0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12331 opc 20 0 54424 5040 4252 R 0.7 0.0 0:00.07 top 11972 root 30 10 2095708 292468 123100 S 0.3 1.8 0:05.65 wlp-agen+ ... - Utilice
ps auxpara mostrar todos los procesos y su uso de recursos, por ejemplo:$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 179460 17548 ? Ss 14:56 0:04 /usr/lib/syste root 2 0.0 0.0 0 0 ? S 14:56 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 14:56 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 14:56 0:00 [rcu_par_gp] ... - Pare los procesos que ya no son necesarios o que causan problemas mediante
kill <PID>okill -9 <PID>, por ejemplo:[opc@<oracle-linux-instance-name> ~]$ kill -9 12346
- Utilice
- Comprobar y ajustar los límites de recursos de usuario
- Utilice
ulimit -apara comprobar los límites de usuario actuales, por ejemplo:$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 62425 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 ... - Utilice
ulimitpara aumentar temporalmente un límite. Por ejemplo, para aumentar temporalmente el número de archivos abiertos que puede tener un usuario, utiliceulimit -n <number>:$ ulimit -n 2096 $ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 62425 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 2096 ... - Compruebe el archivo
/etc/security/limits.confpara obtener el formato correcto, sin errores de escritura y que los valores definidos para una cuenta de usuario son los que espera. Si el archivo contiene valores de configuración no válidos, es posible que el sistema no aplique valores mayores y que una cuenta de usuario alcance un límite predeterminado que active el error.Por ejemplo, la siguiente es una entrada correcta en el archivo
/etc/security/limits.confpara definir el número máximo de procesos para un único usuario o para todos los usuarios:#<domain> <type> <item> <value> * hard nproc 2048 oracle hard nproc 65356 root hard nproc unlimitedNota
El archivolimits.confse puede utilizar para definir límites de usuario personalizados para diferentes recursos del sistema en lugar de utilizar los límites por defecto del sistema. Consulte la página del manuallimits.conf(5)para obtener más información.
- Utilice
- Aumentar los límites del sistema
- Edite
/etc/sysctl.confpara aumentar los límites de todo el sistema. Por ejemplo, para establecer el número máximo de archivos abiertos:fs.file-max = 204708 - Reinicie el sistema para que los cambios surtan efecto.
- Edite
- Comprobar si hay problemas de memoria
- Utilice
free -hpara comprobar el uso de memoria actual y el espacio de intercambio, por ejemplo:$ free -h total used free shared buff/cache available Mem: 15Gi 727Mi 11Gi 16Mi 2.8Gi 14Gi Swap: 4.0Gi 0B 4.0Gi - Si la memoria es baja, considere aumentar el espacio de intercambio o actualizar la RAM.
- Utilice