worker_processes în Nginx

Performanță și PHP Toate versiunile Nginx (valoarea auto: 1.3.8+ / 1.2.5+)

Stabilește câte procese worker pornește Nginx. Valoarea auto pornește câte unul pentru fiecare nucleu de procesor.

Sintaxă
worker_processes număr | auto;
worker_rlimit_nofile număr;

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 -t spune "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.