Solución de problemas de inicio de sesión
Si no puede conectarse a una instancia de Oracle Linux en Oracle Cloud Infrastructure, revise la siguiente información.
La conexión a una instancia de Oracle Linux falla con un error "fork: retry: Resource temporalmente no disponible"
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 ha alcanzado los límites del usuario o del sistema.
Causas potenciales
- Se han alcanzado los límites de recursos de usuario o del sistema: 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 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 de mal comportamiento: un proceso o servicio fuera de control podría estar consumiendo recursos excesivos, lo que impide que se inicien nuevos procesos.
- Hay demasiados descriptores de archivos abiertos: es posible que el sistema no pueda abrir nuevos archivos porque ha alcanzado el número máximo de descriptores de archivos abiertos.
- Configuración incorrecta o error en el archivo
/etc/security/limits.conf
: si hay una configuración incorrecta o un error en el archivolimits.conf
, es posible que no se apliquen los valores más altos y que una cuenta de usuario alcance un límite por defecto que dispare el error.
Solución de problemas de
- Supervisar el uso de recursos e identificar y terminar procesos innecesarios para liberar memoria y espacio de intercambio
- Utilice
top
ovmstat
para 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 aux
para 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] ...
- Termine los procesos que ya no sean necesarios o que causen problemas con
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 -a
para 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
ulimit
para 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 que el archivo
/etc/security/limits.conf
tenga el formato correcto, que no haya errores de escritura y que los valores definidos para una cuenta de usuario sean los esperados. Si hay una configuración o error incorrectos, es posible que el sistema no aplique valores más altos y que una cuenta de usuario alcance un límite predeterminado que dispare el error.Por ejemplo, la siguiente es una entrada correcta en el archivo
/etc/security/limits.conf
para definir el número máximo de procesos para un solo usuario o para todos los usuarios:#<domain> <type> <item> <value> * hard nproc 2048 oracle hard nproc 65356 root hard nproc unlimited
Nota
El archivolimits.conf
se 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 manual delimits.conf(5)
para obtener más información.
- Utilice
- Aumento de los límites del sistema
- Edite
/etc/sysctl.conf
para aumentar los límites de todo el sistema. Por ejemplo, para definir el número máximo de archivos abiertos:fs.file-max = 204708
- Reinicie el sistema para que los cambios surtan efecto.
- Edite
- Comprobar problemas de memoria
- Utilice
free -h
para 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