Apache MPM - Worker vs Prefork


13

Próbuję dowiedzieć się, jaki jest najlepszy Apache MPM, jaki mogę zainstalować na moim VPS. Widziałem pewne testy porównawcze i MPM Worker wydaje się działać lepiej niż Prefork, ale z jakiegoś powodu wszyscy wydają się polecać Prefork zamiast Worker dla konfiguracji PHP.

Czy to tylko dlatego, że niektóre funkcje PHP nie są bezpieczne dla wątków? setlocale()Przychodzi mi tylko na myśl, ale będę używał tego samego ustawienia narodowego w każdej instancji, więc nie sądzę, żeby to był problem. Mój VPS ma mało pamięci i wydaje mi się, że MPM dla pracowników lepiej pasowałby do moich potrzeb, jednak nie jestem pewien.

Czy ktoś może mi pomóc w podjęciu decyzji? Dzięki!


PS: Zajrzałem także do nginx i lighttpd. nginx wydaje się niesamowity, ale staram się unikać kompilacji ze źródła i wciąż nie rozumiem do czego służy php-fpm. Jeśli chodzi o lighttpd - konfiguracja PHP / FCGI była niesamowicie łatwa, ale słyszałem, że ma przecieki pamięci. Czy to nadal prawda?


2
Problem polega na tym, że chociaż rdzeń PHP ma być teraz wątkowo bezpieczny, to jeśli chodzi o rozszerzenia, wszystkie zakłady są wyłączone.
mattdm

Odpowiedzi:


12

Powinieneś użyć prefork podczas używania apache + mod_php. FAQ wyraźnie określa powód, dla którego:

http://www.php.net/manual/en/faq.installation.php#faq.installation.apache2

Dlaczego nie powinienem używać Apache2 z wątkowym MPM w środowisku produkcyjnym?

PHP jest klejem. Jest to klej używany do tworzenia fajnych aplikacji internetowych, łącząc ze sobą dziesiątki bibliotek firm trzecich i sprawiając, że wszystko to wygląda jak jedna spójna całość dzięki intuicyjnemu i łatwemu do nauki interfejsowi językowemu. Elastyczność i moc PHP zależy od stabilności i solidności podstawowej platformy. Potrzebuje działającego systemu operacyjnego, działającego serwera WWW i działających bibliotek innych firm, aby się ze sobą skleić. Gdy którykolwiek z nich przestanie działać, PHP potrzebuje sposobów, aby zidentyfikować problemy i szybko je naprawić. Gdy sprawisz, że podstawowa struktura stanie się bardziej złożona, ponieważ nie będziesz mieć całkowicie oddzielnych wątków wykonania, całkowicie oddzielnych segmentów pamięci i silnego obszaru izolowanego dla każdego żądania gry, do systemu PHP zostaną wprowadzone kolejne słabości.

nginx + php-fpm to także doskonały sposób na uruchamianie aplikacji php. nginx ma natywną obsługę FastCGI, a php-fpm jest jednym z najlepszych sposobów uruchamiania php w środowisku FastCGI. Zobacz dokumentację php tutaj:

http://www.php.net/manual/en/install.fpm.php


Jeśli chodzi o Apache MPM, myślę, że je dostałem, droga wstępna to droga. Jestem skłonny do konfiguracji nginx lub lighttpd ze względu na wysokie zużycie pamięci przez Apache. Lighttpd i PHP-FCGI działają od razu po instalacji z aptitude, jednak nie jestem pewien, czy wycieki pamięci, o których wszyscy mówią w 06/07, są nadal obecne. Przeczytałem również, że Nginx ma mniejsze zużycie procesora, ale nie mogę zmusić go do pracy z PHP-CGI, a tym bardziej z PHP-FPM. Czy istnieje prosty sposób na zainstalowanie tego na Ubuntu za pomocą menedżera pakietów? Czy polecasz lekturę na ten temat?
Alix Axel

Po włączeniu multiwersum mogłem „apt-get install nginx” na klarownym i działa jak mistrz - używam na systemach produkcyjnych. Jest dobry przykład na początek , howtoforge.com/... ale jak zawsze YMMV.
dialt0ne

Jestem w stanie zainstalować nginx przy użyciu apt, ale nie udało mi się powiązać go z interpreterem PHP. Podany link ma nowe źródło, które wydaje się zapewniać php5-fpmpakiet. Spróbuję tego.
Alix Axel,

Ten link może być lepszy howtoforge.com/ ... Używam repozytorium brianmercer dla moich systemów produkcyjnych dla php5-fpm.
dialt0ne
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.