liczba procesów roboczych nginx

23

Konfiguruję nginx do obsługi instalacji Drupal i wydaje mi się, że znajduję sprzeczne informacje na temat ustawień procesów roboczych nginx. Jedna strona mówi, że potrzebujesz dwóch, jedna mówi, że potrzebujesz pięciu, jedna mówi, że na procesor ...

Jak wybrać liczbę procesów roboczych nginx? Jeśli to robi różnicę, to jest maszyną wirtualną gościa w klastrze VMWare, a ja dałem mu jeden wirtualny procesor.

ceejayoz
źródło

Odpowiedzi:

16

Nginx w przeciwieństwie do Apache i innych procesów na serwerach WWW połączenia. Wykorzystuje jeden proces główny do uruchomienia i monitorowania niewielkiej liczby procesów roboczych, które faktycznie obsługują połączenia. Radzę zacząć od domyślnej liczby pracowników, czyli 1.

worker_processes  1;

Musisz to zwiększyć tylko wtedy, gdy okaże się, że pracownik Nginx spędza zbyt dużo czasu zablokowanego na IO. Nie będzie to możliwe, dopóki nie obsłuży setek żądań na sekundę.

Te ustawienia mogą być również przydatne.

worker_rlimit_nofile 8192;

events {
    worker_connections  2048;
    use epoll;
}
Dave Cheney
źródło
1
Czy możesz opisać, do czego służy „robot_rlimit_nofile 8192”?
The Pixel Developer
wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile . To instruuje pracownika, aby zwiększyć jego ulimit.
Dave Cheney
15

W systemach SMP należy uruchomić przynajmniej procesy robocze nCPU: na czterordzeniowym - cztery itd. To wystarcza do proxy.

Jeśli zamierzasz obsługiwać niektóre witryny z dużą ilością treści statycznych, lepiej byłoby dodać więcej pracowników - po jednym na dysk.

Jeśli podsystem dyskowy jest za słaby lub ładuje się zbyt wysoko, procesy robocze nginx mogą zostać zablokowane na operacjach We / Wy i nie mogą obsługiwać innych żądań. W takim przypadku należy zwiększyć liczbę procesów roboczych do odpowiedniej wartości (mogą to być dziesiątki) lub dodać pamięć na pamięć podręczną dysku.

Zajrzyj do wydruku „ps ax”: pracownicy w stanie „D” są zablokowani. Zwiększaj, aż przynajmniej procesy robocze nCPU nie zostaną zablokowane.

Vadim
źródło