nginx uLimit 'worker_connections überschreiten das Ressourcenlimit für offene Dateien: 1024'

14

Ich bekomme diesen Fehler immer wieder nginx/error.logund das macht mich verrückt:

8096 worker_connections exceed open file resource limit: 1024

Ich habe alles versucht, was mir einfällt, und kann nicht herausfinden, was Nginx hier einschränkt. Kannst du sagen, was ich vermisse?

nginx.conf hat dies:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

Ich habe das Ulimit meines Systems folgendermaßen geändert security/limits.conf:

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

Es zeigte immer noch den Fehler. Also habe ich auch versucht zu bearbeiten /etc/default/nginxund diese Zeile hinzugefügt:

ULIMIT="-n 65535"

Es wird immer noch der gleiche Fehler angezeigt. Kann nicht herausfinden, was die Nginx-Worker-Verbindung auf nur 1024 begrenzt. Können Sie mich darauf hinweisen?

Ich habe Debian 7 + Nginx

Neel
quelle

Antworten:

29

In der worker_rlimit_nofile 65535;nginx.conf im Hauptkontext einstellen.

Xavier Lucas
quelle
1
Das ist es! Das hat es behoben. Oh, du bist ein Retter. Es funktioniert jetzt auch dann, wenn das ULimit nicht manuell eingestellt wurde /etc/default/nginx file. Genial. Vielen Dank an Xaviour
Neel
1
gut gemacht Xavier.
Dave Holland
@ Xavier das hat die Fehlermeldung entfernt, aber können Sie erklären, warum dies funktioniert, ohne ulimit wie in der Antwort unten erwähnt zu ändern? google search sagt ulimit in der limits.conf oder der systcl.conf zu ändern, aber keine funktioniert für mich.
Bsienn
2

Werde der Benutzer:

su - nginx

Überprüfen Sie die Grenzen:

ulimit -Hn
ulimit -Sn

Bearbeiten Sie die Anzahl der Dateien, die Sie im Dateisystem öffnen können:

vi /etc/sysctl.conf
fs.file-max = 70000

Laden Sie Ihre Änderungen:

sysctl -p

Mal sehen, ob das hilft.

Dave Holland
quelle
Ich benutze init und habe systemctl nicht installiert. Würde das einen Unterschied machen?
Neel
Als ich zu Nginx-Benutzer gewechselt habe, wird das ulimit -Hn dort korrekt angezeigt. Ich habe dann überprüft init.d/nginx, ob ULIMIT im Standardordner (in dem es bereits festgelegt ist) festgelegt ist, und dann soll dieser Wert festgelegt werden, aber das tut es nicht:Check if the ULIMIT is set in /etc/default/nginx
Neel
Nach dem Ändern von file-max und sobald ich sysctl -pUbuntu 18.04.2 laufen lasse, hängt es, wirft zu viele Dateien auf und bootet nicht, musste den Code im sicheren Boot entfernen, um das Betriebssystem wieder booten zu lassen.
Bsienn