Le serveur est Ubuntu 13.04 (GNU/Linux 3.9.3-x86_64-linode33 x86_64).
nginx est nginx/1.2.6.
Je travaille sur cela depuis plusieurs heures maintenant, alors voici ce que je reçois et voici ce que j'ai fait.
tail -f /usr/local/nginx/logs/error.log
2013/06/18 21:35:03 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:05 [crit] 3426#0: accept4() failed (24: Too many open files)
Nginx en cours d'exécution:
geuis@localhost:~$ ps aux | grep nginx
root 3422 0.0 0.0 39292 380 ? Ss 21:30 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 3423 3.7 18.8 238128 190848 ? S 21:30 0:13 nginx: worker process
nobody 3424 3.8 19.0 236972 192336 ? S 21:30 0:13 nginx: worker process
nobody 3426 3.6 19.0 235492 192192 ? S 21:30 0:13 nginx: worker process
nobody 3427 3.7 19.0 236228 192432 ? S 21:30 0:13 nginx: worker process
nobody 3428 0.0 0.0 39444 468 ? S 21:30 0:00 nginx: cache manager process
Limites logicielles/matérielles modifiées dans /etc/security/limits.conf (paramètres à la fin du fichier)
root soft nofile 65536
root hard nofile 65536
www-data soft nofile 65536
www-data hard nofile 65536
nobody soft nofile 65536
nobody hard nofile 65536
Une lecture des fichiers max
cat /proc/sys/fs/file-max
500000
Et dans /etc/pam.d/common-session:
session required pam_limits.so
Avec cela ajouté et le serveur redémarré pour faire bonne mesure, pour nginx, je compte les limites logicielles/matérielles en obtenant le PID du processus parent et:
cat /proc/<PID>/limits
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
Le processus parent s'exécute en tant que "racine" et les 4 travailleurs s'exécutent en tant que "personne".
root 2765 0.0 0.0 39292 388 ? Ss 00:03 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 2766 3.3 17.8 235336 180564 ? S 00:03 0:21 nginx: worker process
nobody 2767 3.3 17.9 235432 181776 ? S 00:03 0:21 nginx: worker process
nobody 2769 3.4 17.9 236096 181524 ? S 00:03 0:21 nginx: worker process
nobody 2770 3.3 18.3 235288 185456 ? S 00:03 0:21 nginx: worker process
nobody 2771 0.0 0.0 39444 684 ? S 00:03 0:00 nginx: cache manager process
J'ai essayé tout ce que je sais faire et j'ai pu obtenir de Google. I ne peut pas obtenir les limites de fichier pour que nginx augmente.
Aidez-moi?
Ajoutez la ligne suivante à votre nginx et redémarrez le processus:
worker_rlimit_nofile 30000;
Cela permettra aux travailleurs de prendre plus de fichiers. Vous pouvez ensuite vérifier avec:
su - nobody
ulimit -Hn
ulimit -Sn
Cela devrait produire les nouvelles limites matérielles/logicielles.
Dans Ubuntu, éditez /etc/pam.d/su ajoutez ou décommentez la session de ligne requise pam_limits.so
Aussi, dans /etc/security/limits.conf, assurez-vous que vous avez des TABS entre les caractères et non des espaces.
assurez-vous d'exécuter la commande suivante après avoir modifié ces fichiers
sysctl -p
Redémarrez ensuite nginx