Vysvětlení MPM Apache

Webový server Apache je nejoblíbenějším webovým serverem na světě. Částečně je to dáno jeho modulární konstrukcí. Apache 2 zavedl víceprocesorové moduly neboli MPM. MPM mění základní funkce webového serveru. Upravují způsob, jakým Apache naslouchá síti, přijímá a zpracovává požadavky. Mnohé z těchto funkcí jsou spíše technického rázu a přesahují rámec tohoto článku. Tento článek stručně vysvětlí, co jsou různé MPM a jak fungují. Podrobnější informace o různých MPM najdete v dokumentaci Apache.

Úvod

Všechny verze Apache 2.0 a vyšší používají nějakou formu MPM a pro různé operační systémy existuje řada MPM. V tomto článku se zaměříme pouze na ty, které jsou k dispozici pro operační systém Linux. Nejprve budete chtít zjistit, jakou verzi Apache a jaký MPM váš server v současné době používá. To zjistíte tak, že v příkazovém řádku spustíte následující příkaz:

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

Spuštěním tohoto příkazu získáte výstup, který bude vypadat takto:

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

V tomto případě server používá Apache 2.4 a používá MPM Event. Tento výstup se může lišit v závislosti na verzi Apache a MPM, který váš server aktuálně používá.

Změna MPM na serveru cPanel je snadná. Stačí spustit skript EasyApache a vybrat požadovaný MPM z dostupných. Přítomný seznam se bude lišit v závislosti na tom, zda používáte Apache 2.0, Apache 2.2 nebo Apache 2.4. Ve verzích Apache nižších než 2.4 jsou za stabilní považovány pouze Prefork a Worker. Modul Event MPM je na serveru Apache 2.2 považován za experimentální a měl by být používán pouze na serveru Apache 2.4 nebo novějším.

Pokud vám samotné spuštění modulu EasyApache nevyhovuje, obraťte se na podporu společnosti Heroic®, kde vám rádi pomůžeme.

Prefork

S nainstalovaným modulem Prefork je Apache nevláknový webový server s předforkováním. To znamená, že každý podřízený proces Apache obsahuje jedno vlákno a zpracovává vždy jeden požadavek. Z tohoto důvodu spotřebovává více prostředků než vláknové MPM:

Prefork je výchozí MPM, takže pokud není v aplikaci EasyApache vybrán žádný MPM, bude vybrán Prefork. Stále je to nejlepší volba, pokud musí Apache používat knihovny, které nejsou bezpečné pro vlákna, jako je mod_php (DSO), a je ideální, pokud je důležitá izolace procesů.

Worker

MPM Worker změní Apache na víceprocesní, vícevláknový webový server. Na rozdíl od Preforku může mít každý podřízený proces pod Workerem více vláken. Worker tak dokáže zpracovat více požadavků s menším množstvím prostředků než Prefork. Worker se obecně doporučuje pro servery s velkým provozem, na kterých běží Apache ve verzích před 2.4. Worker však není kompatibilní s knihovnami, které nejsou bezpečné pro vlákna. Pokud potřebujete spustit něco, co není thread safe, budete muset zůstat u Preforku.

Event

Každý proces pod Eventem může také obsahovat více vláken, ale na rozdíl od Workeru je každé z nich schopné provádět více než jednu úlohu. Při použití s MPM Event má Apache nejnižší nároky na prostředky.

Event je však podporován pouze na serverech se systémem Apache 2.4.

. Pod Apache 2.2 je Event považován za experimentální a je nekompatibilní s některými moduly starších verzí Apache. Nicméně na serverech Apache 2.2 s velkým provozem, kde se vyskytly problémy s pamětí, může upgrade Apache na MPM Event přinést významné výsledky.

Další MPM

Existuje řada dalších experimentálních MPM, například Threadpool, Perchild a Leader. Liquid Web nedoporučuje tyto MPM provozovat. Protože jsou experimentální, není zaručeno, že budou fungovat podle očekávání, a nemůžeme je ani podporovat, ani zaručit, že je budeme schopni opravit.

Přidáním víceprocesových modulů do systému Apache se zvýšil jeho výkon a flexibilita. Moduly MPM umožňují uživatelům měnit chování jádra. To zvyšuje možnosti, které může uživatel s Apachem dělat, aniž by musel instalovat další software. Pokud máte jakékoli dotazy týkající se tohoto nebo jiného tématu, zavolejte prosím na podporu Heroic Support®.