2015-01-08 4 views
9

anche se ho fatto la seguente impostazione, e anche riavviato il server:Come impostare nginx max file aperti?

# head /etc/security/limits.conf -n2 
www-data soft nofile -1 
www-data hard nofile -1 
# /sbin/sysctl fs.file-max 
fs.file-max = 201558 

Il file limitazione aperta del processo specifico è ancora 1024/4096:

# ps aux | grep nginx 
root  983 0.0 0.0 85872 1348 ?  Ss 15:42 0:00 nginx: master process /usr/sbin/nginx 
www-data 984 0.0 0.2 89780 6000 ?  S 15:42 0:00 nginx: worker process 
www-data 985 0.0 0.2 89780 5472 ?  S 15:42 0:00 nginx: worker process 
root  1247 0.0 0.0 11744 916 pts/0 S+ 15:47 0:00 grep --color=auto nginx 
# cat /proc/984/limits 
Limit      Soft Limit   Hard Limit   Units 
Max cpu time    unlimited   unlimited   seconds 
Max file size    unlimited   unlimited   bytes 
Max data size    unlimited   unlimited   bytes 
Max stack size   8388608    unlimited   bytes 
Max core file size  0     unlimited   bytes 
Max resident set   unlimited   unlimited   bytes 
Max processes    15845    15845    processes 
Max open files   1024     4096     files 
Max locked memory   65536    65536    bytes 
Max address space   unlimited   unlimited   bytes 
Max file locks   unlimited   unlimited   locks 
Max pending signals  15845    15845    signals 
Max msgqueue size   819200    819200    bytes 
Max nice priority   0     0 
Max realtime priority  0     0 
Max realtime timeout  unlimited   unlimited   us 

Ho provato tutte le possibili soluzioni da google, ma invano. Che ambiente mi è mancato?

+2

duplicato: http://stackoverflow.com/questions/16919673/nginx-file-descriptor-limit? – T0xicCode

risposta

9

ho trovato la risposta in pochi minuti dopo la pubblicazione questa domanda ...

# cat /etc/default/nginx 
# Note: You may want to look at the following page before setting the ULIMIT. 
# http://wiki.nginx.org/CoreModule#worker_rlimit_nofile 
# Set the ulimit variable if you need defaults to change. 
# Example: ULIMIT="-n 4096" 
ULIMIT="-n 15000" 

/etc/security/limit.conf è utilizzato da PAM, in modo che shoud essere nulla a che fare con www-data (è utente nologin).

+4

dove è/etc/default/nginx? Vedo solo /etc/nginx/nginx.conf, no luck setting worker_rlimit_nofile – SathiyaS

19

su CentOS (testato su 7.x):

Creare il file /etc/systemd/system/nginx.service.d/override.conf con il seguente contenuto:

[Service] 
LimitNOFILE=65536 

Ricarica systemd demone con:

systemctl daemon-reload 

Aggiungi questo File di configurazione Nginx:

worker_rlimit_nofile 16384; (has to be smaller or equal to LimitNOFILE set above) 

E infine riavviare Nginx:

systemctl restart nginx 

È possibile verificare che funziona con cat /proc/<nginx-pid>/limits.

+1

Sto confermando che funziona anche con ** Ubuntu Xenial **. Grazie per l'approccio. – cepharum

+0

forse un giorno avremo un 'worker_rlimit_nofile' per il processo principale di nginx: forse master_rlimit_nofile – davesave

+0

Questo funziona anche per RHEL! –