Ce face worker_processes
Nginx are un proces master, care citește configurația, și unul sau mai multe procese worker, care servesc efectiv cererile. Fiecare worker poate deservi mii de conexiuni simultan, deci nu ai nevoie de un proces pentru fiecare vizitator.
worker_processes auto; pornește câte un worker pentru fiecare nucleu disponibil și este alegerea potrivită în aproape toate cazurile. Mai multe procese decât nuclee nu aduc viteză în plus.
worker_rlimit_nofile ridică limita de fișiere deschise pentru procesele worker. Fiecare conexiune folosește un descriptor (două la proxy), deci limita trebuie să fie cel puțin cât worker_connections.
Parametri
| Parametru | Descriere |
|---|---|
Context |
main (în afara oricărui bloc, la începutul lui nginx.conf). |
Implicit |
worker_processes 1; |
auto |
Câte un worker pentru fiecare nucleu de procesor. |
worker_rlimit_nofile |
Limita de fișiere deschise pentru fiecare worker. |
Ce returnează
Nimic; se aplică la pornire sau la nginx -s reload.
Exemple
Exemplul 1: Începutul fișierului nginx.conf
user www-data;
worker_processes auto;
worker_rlimit_nofile 65535;
pid /run/nginx.pid;
events {
worker_connections 8192;
}
Exemplul 2: Câte procese au pornit
Pe un server cu 4 nuclee, auto pornește 4 procese worker.
nproc
ps -o pid,user,cmd -C nginx
Ieșire în terminal
4
PID USER CMD
812 root nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
813 www-data nginx: worker process
814 www-data nginx: worker process
815 www-data nginx: worker process
816 www-data nginx: worker process
Greșeli frecvente
- Setezi un număr mare (
worker_processes 32;) pe un server cu 2 nuclee, crezând că servește mai mulți vizitatori: procesele doar își iau timp de procesor unul altuia. - Pui directiva în blocul
http:nginx -tspune"worker_processes" directive is not allowed here.
Comenzi înrudite
worker_connections: Numărul maxim de conexiuni simultane pe care le poate deschide fiecare proces worker, inclusiv conexiunile spre serverele din spate.