Sobes.tech
Middle

Que faire si une erreur se produit lors de l'utilisation de nginx lorsque le nombre de connexions dépasse 1024?

sobes.tech IA

Réponse de l'IA

Cela indique une limitation du nombre de descripteurs de fichiers ouverts.

Solutions:

  1. Augmenter worker_connections dans la configuration de Nginx :

    // Augmenter le nombre maximum de connexions par processus worker
    events {
        worker_connections 4096; // ou plus, selon les besoins et ressources
    }
    
  2. Augmenter la limite des fichiers ouverts au niveau du système d'exploitation :

    • Pour la session utilisateur actuelle :
      # Augmenter temporairement la limite de fichiers ouverts
      ulimit -n 65536
      
    • Pour tout le système (de façon permanente) : Modifier le fichier /etc/security/limits.conf. Ajouter des lignes :
      # Limites spécifiques à l'utilisateur
      nginx soft nofile 65536
      nginx hard nofile 65536
      
      # Alternativement, pour tous les utilisateurs
      # * soft nofile 65536
      # * hard nofile 65536
      
      (Remplacer nginx par le nom de l'utilisateur sous lequel Nginx s'exécute, si différent.) Il est nécessaire de redémarrer le système ou de se reconnecter pour appliquer les changements, ou d'exécuter sysctl -p.
  3. Vérifier les paramètres globaux du noyau : S'assurer que fs.file-max est suffisamment élevé.

    # Vérifier la valeur actuelle
    cat /proc/sys/fs/file-max
    # Définir une nouvelle valeur (temporairement)
    # sudo sysctl -w fs.file-max=100000
    # Définir une nouvelle valeur (de façon permanente) - éditer /etc/sysctl.conf
    # Ajouter la ligne : fs.file-max = 100000
    # Appliquer les changements
    # sudo sysctl -p
    
  4. S'assurer que l'utilisateur Nginx a le droit d'ouvrir autant de fichiers : Vérifier sous quel utilisateur Nginx s'exécute et quels limites sont fixées pour cet utilisateur. Cela est lié au point 2.

  5. Redémarrer Nginx : Après avoir modifié la configuration de Nginx ou les limites système, il faut le redémarrer.

    # Redémarrer Nginx
    sudo systemctl reload nginx
    # Ou, si cela ne fonctionne pas
    # sudo systemctl restart nginx
    

Priorité dans la résolution :

  1. Vérifier et augmenter worker_connections.
  2. Vérifier et augmenter les limites de descripteurs de fichiers pour l'utilisateur Nginx.
  3. Vérifier et augmenter la limite globale fs.file-max.
  4. Redémarrer Nginx.

Il est important de rappeler que l'augmentation des limites doit être justifiée et en rapport avec les ressources disponibles du serveur (mémoire, CPU). Des valeurs trop élevées peuvent entraîner une instabilité du système.