J'ai reçu l'erreur "trop de descripteurs de fichiers" apparemment courante sur nginx. Après de nombreuses recherches, la solution est clairement d'augmenter le nombre de descripteurs de fichiers disponibles pour nginx. Mais il n'y a pas suffisamment d'informations là-bas pour que je me sente à l'aise de le faire de manière significative et sûre. Voici les principaux points que la plupart des discussions sur les forums/par e-mail abordent :
- le système d'exploitation a sa propre limite totale de descripteurs de fichiers (sur mon système,
cat /proc/sys/fs/file-max
affiche "100678") - chaque utilisateur peut également avoir sa propre limite (mais sur mon système, en exécutant
ulimit
en tant qu'utilisateur quelconque affiche "illimité" voir la mise à jour en bas avec plus de détails) - quelques personnes ont dit quelque chose dans le sens de ce que cette personne a dit : 'La directive worker_rlimit_nofile ne spécifie pas "combien", c'est la limite du système d'exploitation qui le fait. La directive worker_rlimit_nofile permet juste une façon rapide et sale d'augmenter cette limite si ce n'est pas assez.' Donc je suppose que l'implication est qu'il est "mieux" de définir la limite pour l'utilisateur OS nginx au lieu de le faire dans la configuration ?
Je peux simplement ajouter une valeur worker_rlimit_nofile plus grande que le nombre de connexions par travailleur et appeler ça une journée, mais j'ai l'impression de ne pas vraiment comprendre ce qui se passe ici.
- pourquoi la limite par travailleur serait-elle inférieure à la limite OS ?
- Comment savoir quelle est ma limite actuelle ?
mise à jour : pour root et un utilisateur normal, ulimit affiche "illimité", MAIS ulimit -Hn
et ulimit -Sn
affichent tous les deux 1024