2014-11-19 7 views
5

In einem Versuch entstehende upload progress module zu implementieren, wird die folgende Serverkonfiguration in zu vielen offenen Dateien Fehler führtNginx Konfiguration in zu vielen Verbindungen

2014/11/19 12:10:34 [alert] 31761#0: *1010 socket() failed (24: Too many open files) while connecting to upstream, client: 127.0.0.1, server: xxx, request: "GET /documents/15/edit HTTP/1.0", upstream: "http://127.0.0.1:80/documents/15/edit", host: "127.0.0.1" 
2014/11/19 12:10:34 [crit] 31761#0: *1010 open() "/usr/share/nginx/html/50x.html" failed (24: Too many open files), client: 127.0.0.1, server: xxx, request: "GET /documents/15/edit HTTP/1.0", upstream: "http://127.0.0.1:80/documents/15/edit", host: "127.0.0.1" 

Im Folgenden ist der relevante Teil des Server bloc der erzeugt den Konflikt passagier_enabled on; rails_env Entwicklung; root/home/benutzer/app/aktuell/öffentlich;

# redirect server error pages to the static page /50x.html 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root html; 
    } 

    location/{ 
     # proxy to upstream server 
     proxy_pass http://127.0.0.1; 
     proxy_redirect default; 

     # track uploads in the 'proxied' zone 
     # remember connections for 30s after they finished 
     track_uploads proxied 30s; 
    } 

    location ^~ /progress { 
     # report uploads tracked in the 'proxied' zone 
     report_uploads proxied; 
    } 

eine relative n00b Sein nginx, ich weiß nicht begreifen, wo dies die zu viele Dateien Fehler zu erzeugen. Ich nahm an, dass die Fehlerseiten nur für 500-504 Fehler Server sind ...

Antwort

5

Erste Kontrolle und erhöhen Limit geöffnete Dateien in dem Root-Shell (systemweit, es ist 1024 in der Regel):

# ulimit -n 
# ulimit -n 16384 

dann können Sie nginx offene Dateien Grenze (Haupt Zusammenhang oben auf nginx.conf) erhöhen:

worker_rlimit_nofile 16384 

dann starten nginx)

Sollte dies nicht helfen, mehr Detaillösungen überprüfen wie

Nginx: 24: Too Many Open Files Error And Solution

+0

Es scheint eine Beziehung mit den auf der Ereignissebene definierten 'worker_connections' zu geben. Weil ich bekomme, dass 8192 worker_connections nicht genug sind. Diese Zahl werde ich durch Versuch und Irrtum einstecken, aber resultierend in entweder 'zu vielen Dateien' oder unzureichenden worker_connctions Fehlern. Die Verbindung schlägt systemweite Grenzen vor. Ich kann es versuchen, aber gibt es wieder eine Beziehung zwischen harten und weichen Grenzen? – Jerome

Verwandte Themen