J'ai eu l'erreur apparemment courante "trop de descripteurs de fichiers" sur nginx. Après de nombreuses recherches, la solution consiste clairement à augmenter le nombre de descripteurs de fichiers disponibles pour nginx. Mais il n'y a pas assez d'informations pour que je me sente à l'aise de le faire de manière significative et sûre. Voici les principaux points abordés par la plupart des discussions de forum / e-mail:
- le système d'exploitation a sa propre limite de descripteur de fichier total (sur mon système,
cat /proc/sys/fs/file-max
génère "100678") - chaque utilisateur peut aussi avoir sa propre limite (mais sur mon système, il fonctionne
ulimit
comme n'importe quel utilisateur génère "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: '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 simplement d'élargir cette limite de manière rapide et sale si cela ne suffit pas. Donc, je suppose que l'implication est qu'il est "préférable" de définir la limite pour l'utilisateur du système d'exploitation nginx plutôt que dans la configuration?
Je peux simplement ajouter une valeur worker_rlimit_nofile supérieure au nombre de connexions par travailleur et l'appeler un jour, mais je sens que je ne sais pas vraiment ce qui se passe ici.
- pourquoi la limite par travailleur serait-elle inférieure à la limite du système d'exploitation?
- Comment savoir quelle est ma limite maintenant?
mise à jour : pour root et pour un utilisateur normal, ulimit sort "illimité", MAIS ulimit -Hn
et les ulimit -Sn
deux sortent 1024
setsebool -P httpd_setrlimit 1
afin que nginx ait les autorisations pour définir sa limite.Je dois vérifier la source pour être honnête, mais c'est assez bas.
J'ai utilisé
worker_rlimit_nofile 15000;
et je n'ai eu aucun problème, vous pouvez l'augmenter en toute sécurité, cependant, la chance de manquer de descripteurs de fichiers est minuscule.la source