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.conf no 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 top o vmstat 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]
      ...
    • Pare los procesos que ya no son necesarios o que causan problemas mediante kill <PID> o kill -9 <PID>, por ejemplo:
      [opc@<oracle-linux-instance-name> ~]$ kill -9 12346
  • 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, utilice ulimit -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.conf para 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.conf para 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           unlimited
      Nota

      El archivo limits.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 limits.conf(5) para obtener más información.
  • Aumentar los límites del sistema
    • Edite /etc/sysctl.conf para 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.
  • Comprobar si hay 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.