Dépannage de connexion

Consultez les informations suivantes pour résoudre les problèmes de connexion à l'instance Oracle Linux sur Oracle Cloud Infrastructure.

Échec de la connexion à une instance Oracle Linux avec une erreur "fourche : réessayer : ressource temporairement indisponible"

L'erreur fourchette a échoué : Ressource temporairement indisponible sur Oracle Linux indique souvent que le système ne peut pas créer de nouveaux processus en raison de limites de ressources telles qu'une table de processus complète, une mémoire insuffisante ou l'atteinte des limites de l'utilisateur ou du système.

Causes potentielles

Limites de ressources d'utilisateur ou de système atteintes
Un utilisateur peut avoir une limite sur le nombre de processus qu'il peut créer ou le nombre de fichiers ouverts qu'il peut avoir. Le système peut également être incapable de créer de nouveaux processus, car il manque des ressources ou a atteint son nombre maximal de processus.
Mémoire système insuffisante ou espace de permutation
Il se peut que le système ne dispose pas de suffisamment de mémoire ou d'espace de permutation pour les nouveaux processus.
Un service ou un processus inapproprié
Un processus ou un service bloqué peut consommer trop de ressources, ce qui empêche le démarrage de nouveaux processus.
Trop de descripteurs de fichier sont ouverts
Il est possible que le système ne puisse pas ouvrir de nouveaux fichiers car il a atteint son nombre maximal de descripteurs de fichier ouverts.
Configuration incorrecte ou erreur dans le fichier /etc/security/limits.conf
Si le fichier limits.conf n'est pas configuré correctement, des valeurs plus grandes peuvent ne pas être appliquées et un compte d'utilisateur peut atteindre une limite par défaut déclenchant l'erreur.

Dépannage

  • Surveiller l'utilisation des ressources et identifier et arrêter les processus inutiles pour libérer de la mémoire et échanger de l'espace
    • Utilisez top ou vmstat pour identifier les processus qui consomment beaucoup d'UC ou de mémoire, par exemple :
      $ 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+
      ...
    • Utilisez ps aux pour lister tous les processus et leur utilisation des ressources, par exemple :
      $ 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]
      ...
    • Arrêtez les processus qui ne sont plus nécessaires ou qui causent des problèmes à l'aide de kill <PID> ou kill -9 <PID>, par exemple :
      [opc@<oracle-linux-instance-name> ~]$ kill -9 12346
  • Vérifier et ajuster les limites de ressources d'utilisateur
    • Utilisez ulimit -a pour vérifier les limites d'utilisateur courantes, par exemple :
      $ 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
      ...
    • Utilisez ulimit pour augmenter temporairement une limite. Par exemple, pour augmenter temporairement le nombre de fichiers ouverts qu'un utilisateur peut avoir, utilisez 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
      ...
    • Vérifiez que le formatage du fichier /etc/security/limits.conf est correct, qu'il n'y a pas d'erreur de saisie et que les valeurs définies pour un compte d'utilisateur sont celles attendues. Si le fichier contient des paramètres de configuration non valides, le système peut ne pas appliquer de valeurs plus grandes et un compte d'utilisateur peut atteindre une limite par défaut déclenchant l'erreur.

      Par exemple, l'entrée suivante dans le fichier /etc/security/limits.conf permet de définir le nombre maximal de processus pour un seul utilisateur ou pour tous les utilisateurs :

      #<domain>      <type>  <item>         <value>
      
      *                hard    nproc           2048
      oracle           hard    nproc           65356
      root             hard    nproc           unlimited
      Note

      Le fichier limits.conf peut être utilisé pour définir des limites d'utilisateur personnalisées pour différentes ressources système au lieu d'utiliser les limites par défaut du système. Voir la page de manuel limits.conf(5) pour plus de détails.
  • Augmenter les limites du système
    • Modifiez /etc/sysctl.conf pour augmenter les limites à l'échelle du système. Par exemple, pour définir le nombre maximal de fichiers ouverts :
      fs.file-max = 204708
    • Redémarrez le système pour que les modifications prennent effet.
  • Vérifier les problèmes de mémoire
    • Utilisez free -h pour vérifier l'utilisation courante de la mémoire et permuter l'espace, par exemple :
      $ 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 mémoire est faible, envisagez d'augmenter l'espace de swap ou de mettre à niveau la mémoire vive.