Ladění výkonu Apache:

  1. Apache Performance Tuning:
  2. Apache Performance Tuning: Swap Memory
  3. Apache Performance Tuning: Výkonnostní ladění paměti Apache: moduly MPM
  4. Apache Performance Tuning:
  5. Apache Performance Tuning: MPM Directives
  6. Apache Performance Tuning:
  7. Jak v Apache povolit potrubní protokolování

Čas čtení: 3 minuty

Základem pro pochopení výkonu serveru Apache jsou bezesporu multiprocesorové moduly (MPM). Tyto moduly určují základ toho, jak Apache řeší multiprocessing. Multiprocessing znamená provádění více operací současně v systému s více centrálními procesorovými jednotkami (CPU Cores).

Modulů MPM je na výběr mnoho, tento článek se však zaměřuje na nejčastěji používané moduly, které se vyskytují na serverech VPS založených na systému Liquid Web Linux. Těmito moduly jsou:

  • MPM Prefork
  • MPM Worker
  • MPM Event
  • Ostatní MPM
  • Který MPM je nejlepší?

MPM Prefork

Samoregulační MPM Prefork odvozuje svůj název od toho, jak se preemptivně rozvětvuje nebo kopíruje do nových identických procesů, aby čekal na příchozí požadavky. MPM Prefork je nevláknový procesní přístup k multiprocessingu, který spouští Apache v jediném nadřazeném serverovém procesu. Tento nadřazený proces je zodpovědný za správu všech dalších podřízených serverů, které tvoří jeho serverpool. Při použití MPM Prefork každý podřízený server zpracovává pouze jeden požadavek. Toto zaměření zajišťuje úplnou izolaci od ostatních požadavků vyřizovaných na serveru. MPM Prefork se obvykle používá kvůli kompatibilitě, pokud jsou vyžadovány nevláknové knihovny/software, jako je mod_php (DSO). Z hlediska optimalizace může být MPM Prefork ve srovnání s vícevláknovými řešeními značně nedostatečný, protože vyžaduje mnohem více prostředků, aby dosáhl podobné úrovně provozu jako vláknový MPM. Je náročný na zdroje kvůli nutnosti vytvářet plné kopie Apache pro každý požadavek.

Poznámka:
Pokud je to možné, vyhněte se použití MPM Prefork. Jeho neschopnost dobře škálovat se zvýšeným provozem rychle předčí dostupný hardware na většině systémových konfigurací.

MPM Worker

Hybridní preforkování, vícevláknový, multiprocesorový webový server. Stejným způsobem jako MPM Prefork používá MPM Worker stejný přístup s jediným nadřazeným procesem, který řídí všechny děti v rámci svého serverového fondu. Na rozdíl od MPM Prefork jsou však tyto děti vícevláknové procesy, které mohou zpracovávat desítky vláken (požadavků) současně. MPM Worker položil základ pro vícevláknový multiprocesing v serverech Apache, který se ustálil ve verzi Apache 2.2. Konfigurace s využitím vláken umožňuje Apache snadno obsluhovat stovky požadavků, přičemž v paměti zůstává pouze několik desítek podřízených procesů. MPM Worker tvoří řešení pro webové služby s vysokou kapacitou i nízkými nároky na zdroje.

Poznámka
Směrnice KeepAliveTimeOut v současnosti definuje dobu, po kterou bude Apache čekat na požadavky. Při použití KeepAlive s MPM Worker používejte co nejmenší KeepAliveTimeout (nejlépe 1 sekundu).

MPM Event

Na základě zdrojového kódu MPM Worker sdílí MPM Event konfigurační směrnice s MPM Worker. Funguje téměř identicky jako MPM Worker s výjimkou zpracování požadavků KeepAlive. MPM Event používá vyhrazené vlákno Listener v každém podřízeném procesu. Toto vlákno Listening je zodpovědné za směrování příchozích požadavků na dostupné pracovní vlákno. Vlákno Listening řeší problém, se kterým se setkává MPM Worker, který blokuje celá vlákna a čeká na KeepAliveTimeout. Posluchačský přístup MPM Event zajišťuje, že pracovní vlákna nejsou „zaseknutá“ při čekání na vypršení KeepAliveTimeout. Tato metoda udržuje maximální množství pracovních vláken, která zpracovávají co nejvíce požadavků.

Informace o limitu serveru

Tip:
MPM Event je v Apache 2 stabilní.4, starší verze mohou jako alternativu používat MPM Worker.

Další MPM

K dispozici je sortiment dalších MPM. Ty jsou obvykle součástí integrace Apache do jiných operačních systémů, než jsou systémy založené na Unixu. Ty mají specifické MPM, které jsou požadavky nebo využívají Apache na příslušných typech systémů. Tyto typy MPM jsou mimo rámec tohoto článku. Více informací o konkrétních MPM najdete v části Výchozí MPM v oficiální dokumentaci Apache.

Poznámka:
Doporučujeme vyhýbat se experimentálním a nestabilním MPM. Nespolehlivost těchto typů softwaru je činí nepodporovatelnými.

Který MPM je nejlepší?

Při zvažování optimalizace je nutné si uvědomit, že neexistuje nic takového jako univerzální konfigurace Apache. Správný výběr MPM vyžaduje analýzu mnoha pohyblivých proměnných, jako je provoz, kód webu, typ serveru, PHP Handler a dostupný hardware. Každý server je jedinečný, takže výběr nejlepšího MPM je zcela subjektivní volbou.

Pokud kód vaší aplikace nepodporuje vícevláknové zpracování, pak bude vaší volbou nevyhnutelně MPM Prefork čistě na základě kompatibility. MPM Prefork obsahuje softwarové moduly jako mod_php (DSO). MPM Worker bez KeepAlive funguje velmi dobře, pokud je vaše aplikace vysoce výkonný systém API s vyrovnáváním zátěže. Škálovatelnost a flexibilita MPM Event je solidní volbou pro hostování více malých až středně velkých webů v konfiguraci sdíleného hostingu.

Většina jednoduchých nastavení serverů funguje dobře v samosprávné výchozí konfiguraci MPM Event, což z ní činí ideální výchozí bod pro optimalizační ladění. Po zvolení MPM lze přejít ke konfiguračním směrnicím a zkontrolovat, která nastavení se týkají výkonu a optimalizace serveru. Nebo se podívejte na náš předchozí článek z této série, Apache Performance Tuning:

Navigace v seriálu << Předchozí článekDalší článek >>

Napsat komentář