Apache 2.2 mpm_worker: więcej wątków czy więcej procesów?


17

Korzystając z Worker MPM w Apache, możesz manipulować liczbą procesów potomnych i liczbą wątków serwera na proces potomny.

Jakie są zalety i wady każdego z nich? W jakich okolicznościach zwiększysz jeden lub drugi?

Odpowiedzi:


25

Do tej pory były to moje najważniejsze względy przy określaniu Wątki vs. Procesy:

  1. Wątki zużyją znacznie mniej pamięci rezydentnej niż Procesy. Tak, w przypadku bibliotek z dynamicznie połączonymi bibliotekami wiele procesów jest współdzielonych przez proces kontroli Apache i jego procesy potomne, jednak każdy nowy proces będzie musiał utworzyć instancję wszystkich włączonych modułów.

    Można to łatwo przetestować, porównując użycie pamięci każdego Procesu, na przykład, gdzie masz 5 procesów i 1 wątek każdy lub 5 procesów i 25 wątków każdy. W moim przypadku każdy proces potomny zajmuje około 7 MB niezależnie od liczby wątków.

    + Dla wątków

  2. Załadowanie nowego procesu zajmuje więcej czasu i cykli procesora niż wątek. Można to sprawdzić, sprawdzając średnią liczbę stron wyświetlanych za pomocą „ab”.

    + Dla wątków

  3. A Przetwarza Wątki wszystkie zależą od Procesu. Największym problemem tutaj jest to, że jeśli coś się stanie z Procesem, wpłynie to na wszystkie Wątki z nim związane. Jeśli korzystasz z jednego Procesu z wiązką Wątków, wtedy Proces zginie, podobnie jak Wątki. Więcej procesów spowodowałoby zatem lepszy rozdział, a tym samym większą tolerancję „winy”, jeśli chcesz.

    + Dla procesów

  4. Powiązane z (3), dla modułów takich jak PHP, ich pamięć jest ładowana przez proces i dzielona między wszystkimi wątkami. Oznacza to, że jeśli masz php z memory_limit ustawionym na 100Mbs z 25 wątkami poniżej, to przy maksymalnym obciążeniu technicznie każdy wątek byłby w stanie przydzielić maksymalnie 4 MB każdy (oczywiście, że tak się nie stanie, niektórzy będą się śmiać, inni będą głodować ).

Tak więc ostatecznie zależy to od twojego przypadku użycia. Mówiąc to, będziesz chciał zmaksymalizować liczbę używanych wątków, aby zmniejszyć zużycie pamięci i zwiększyć czas reakcji. Musisz jednak zrównoważyć to odpowiednią ilością procesów, aby uzyskać lepszą odporność na uszkodzenia.

Oczywiście nie jestem tutaj ekspertem, ponieważ dopiero niedawno zacząłem się tym przejmować, więc nie mogę się doczekać, aby zobaczyć, jakie inne odpowiedzi mogą się tutaj pojawić!


1
+1 za dobre informacje ogólne. Chciałbym jednak zobaczyć więcej szczegółów głębokości / betonu, jeśli to możliwe.
sh-beta
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.