Der Server ist Ubuntu 13.04 (GNU / Linux 3.9.3-x86_64-linode33 x86_64).
Nginx ist Nginx / 1.2.6.
Ich arbeite jetzt seit einigen Stunden daran, also bekomme ich Folgendes und was ich getan habe.
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 läuft:
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
Geänderte Soft / Hard-Limits in /etc/security/limits.conf (Einstellungen vom Ende der Datei)
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
Ein Lesen der max Dateien
cat /proc/sys/fs/file-max
500000
Und in /etc/pam.d/common-session:
session required pam_limits.so
Wenn dies hinzugefügt wurde und der Server aus gutem Grund neu gestartet wurde, zähle ich für nginx die weichen / harten Grenzen, indem ich die PID des übergeordneten Prozesses erhalte und:
cat /proc/<PID>/limits
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
Der übergeordnete Prozess wird als "root" und die vier Worker als "nobody" ausgeführt.
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
Ich habe alles ausprobiert, was ich tun kann, und konnte es von Google bekommen. Ich kann die Dateibeschränkungen für Nginx nicht erhöhen.
Hilfe?
quelle
worker_rlimit_nofile
uWSGI-Einstellung und nicht die Systemgrenzen ändern (was bei mir funktioniert hat), können Sie dies nicht über überprüfenulimit
. Stattdessen sollten Sie direkt anschauen/proc/<pid of worker>/limits
.Bearbeiten Sie in Ubuntu /etc/pam.d/su und fügen Sie die für die Zeilensitzung erforderliche Datei pam_limits.so hinzu oder kommentieren Sie sie aus
Stellen Sie außerdem in /etc/security/limits.conf sicher, dass zwischen den Zeichen TABS und keine Leerzeichen stehen.
quelle
Stellen Sie sicher, dass Sie den folgenden Befehl ausführen, nachdem Sie diese Dateien bearbeitet haben
Starten Sie dann nginx neu
quelle