Apache MPMs Explained

Serwer WWW Apache jest najpopularniejszym serwerem WWW na świecie. Jest to po części spowodowane jego modułową konstrukcją. Apache 2 wprowadził Moduły Wieloprocesorowe, lub MPM. MPM-y zmieniają podstawową funkcjonalność serwera WWW. Robią to modyfikując sposób w jaki Apache nasłuchuje sieci, akceptuje i obsługuje żądania. Wiele z tych funkcjonalności jest raczej technicznych i wykracza poza zakres tego artykułu. Ten artykuł pokrótce wyjaśni czym są różne MPM i jak działają. Dla bardziej szczegółowych informacji na temat różnych MPM, proszę odwiedzić Dokumentację Apache.

Wprowadzenie

Wszystkie wersje Apache 2.0 i większe uruchamiają jakąś formę MPM, i istnieje wiele różnych MPM dla różnych systemów operacyjnych. W tym artykule skupimy się tylko na tych dostępnych dla systemu operacyjnego Linux. Najpierw musisz ustalić, jaka wersja Apache’a i jaki MPM jest aktualnie uruchomiony na twoim serwerze. Możesz to ustalić uruchamiając następującą komendę w wierszu poleceń.

httpd -V | grep -i 'version\|mpm'

Wykonanie tej komendy da ci wynik, który będzie wyglądał tak:

# httpd -V | grep -i 'version\|mpm'
Server version: Apache/2.4.16 (Unix)
Server MPM: event

W tym przypadku, serwer pracuje z Apache 2.4 i używa Event MPM. To wyjście może być inne w zależności od wersji Apache’a i MPM, który aktualnie działa na twoim serwerze.

Zmiana MPM na serwerze cPanel jest łatwa. Wystarczy uruchomić skrypt EasyApache i wybrać MPM, który chcesz z dostępnych. Lista, która się pojawi będzie się różnić w zależności od tego czy używasz Apache 2.0, Apache 2.2, czy Apache 2.4. Na wersjach Apache poniżej 2.4, tylko Prefork i Worker są uważane za stabilne. Event MPM jest uważany za eksperymentalny na Apache 2.2 i powinien być używany tylko z Apache 2.4 lub nowszym.

Jeśli nie czujesz się komfortowo uruchamiając EasyApache samodzielnie, skontaktuj się z Heroic Support®, a my z przyjemnością Ci pomożemy.

Prefork

Z zainstalowanym modułem Prefork, Apache jest niewątkowym, pre-forkingowym serwerem WWW. Oznacza to, że każdy proces potomny Apache’a zawiera pojedynczy wątek i obsługuje jedno żądanie na raz. Z tego powodu, zużywa on więcej zasobów niż wątkowe MPM: Worker i Event.

Prefork jest domyślnym MPM, więc jeśli w EasyApache nie zostanie wybrany żaden MPM, wybrany zostanie Prefork. Nadal jest to najlepszy wybór, jeśli Apache musi korzystać z bibliotek, które nie są bezpieczne dla wątków, takich jak mod_php (DSO), i jest idealny, jeśli ważna jest izolacja procesów.

Worker

Profork zmienia Apache’a w wieloprocesowy, wielowątkowy serwer WWW. W przeciwieństwie do Prefork, każdy proces potomny w Worker może mieć wiele wątków. Jako taki, Worker może obsłużyć więcej żądań przy mniejszej ilości zasobów niż Prefork. Worker jest zalecany dla serwerów o dużym natężeniu ruchu, pracujących pod kontrolą Apache’a w wersji wcześniejszej niż 2.4. Jednakże, Worker jest niekompatybilny z bibliotekami, które nie są bezpieczne dla wątków. Jeśli potrzebujesz uruchomić coś, co nie jest bezpieczne dla wątków, będziesz musiał trzymać się Prefork.

Event

Każdy proces w Event również może zawierać wiele wątków, ale w przeciwieństwie do Workera, każdy z nich jest w stanie wykonać więcej niż jedno zadanie. Apache ma najniższe wymagania dotyczące zasobów, gdy jest używany z Event MPM.

Event, chociaż, jest obsługiwany tylko na serwerach z Apache 2.4. Pod Apache 2.2, Event jest uważany za eksperymentalny i jest niekompatybilny z niektórymi modułami na starszych wersjach Apache. Niemniej jednak, na serwerach Apache 2.2 o dużym natężeniu ruchu, gdzie Apache doświadczył problemów z pamięcią, aktualizacja Apache do wykorzystania Event MPM może przynieść znaczące rezultaty.

Inne MPM

Istnieje wiele innych eksperymentalnych MPM, takich jak Threadpool, Perchild i Leader. Liquid Web zaleca nie uruchamianie tych MPM. Ponieważ są one eksperymentalne, nie ma gwarancji, że będą działać zgodnie z oczekiwaniami, a my nie możemy ich wspierać ani zagwarantować, że będziemy w stanie je naprawić.

Dodanie Multi Process Modules do Apache zwiększyło jego moc i elastyczność. MPM pozwalają użytkownikom na zmianę zachowania rdzenia. To zwiększa możliwości Apache’a bez konieczności instalowania dodatkowego oprogramowania. Jeśli masz jakiekolwiek pytania dotyczące tego lub czegokolwiek innego, proszę zadzwoń do Heroic Support®.