| Upravujeme výkon |
|
|
|
| Zhlédnutí: 2326 | ||||||||
| Napsal filbar | ||||||||
| Pátek, 03 srpen 2007 | ||||||||
| Aktualizováno ( Úterý, 31 červenec 2007 ) | ||||||||
|
V tomto posledním díle seriálu a webovém serveru Apache se zaměříme na to, jak optimalizovat výkon, tak aby odpovídal našim potřebám. Konfigurace výkonu používá několik modulů. To jaky modul používáme závisí na operačním systému a také na volbě při kompilaci. Při kompilaci webového serveru Apache máme k dipozici přepínač --with-mpm=, kterému můžeme jako parametr zadat jeden z těchto modulů: worker, prefork, perchild, leader a threadpool. Pokud nezadáme žádný parametr použije se v prostředí Unixu prefork. První tři používají skoro stejné direktivy a poslední dva jsou v Apachi 2.0 označené jako experimentální a v nové větvi 2.2 už je nenajdeme. Stejně tak Apache 2.2 neobsahuje ani modul leader. Nejprve uvededu direktivy společné prvníma dvěma modulům a poté bude následovat jejich charakteristika a speciální direktivy. StartServers určuje jak je již z názvu patrné kolik se má nastartovat procesů www serveru. MinSpareServers/MaxSpareServers rozhoduje o tom kolik má být spuštěno něčinných procesů(prefork)/vláken pro budoucí potřebu. Maximální počet připojení k serveru nastavíme direktivou MaxClients. Jelikož každý klient je obsluhován jedním vláknem/procesem určuje také jejich maximální počet. MaxRequestsPerChild předepisuje vláknu /procesu kolik má obsloužit požadavků předtím než se ukončí. PreforkJedná se o výchozí modul pro obsluhování požadavků. Jak je již z názvu partné, tak pro obluhu více požadavků současně tvoří více procesů. Ze základních direktiv používá ty dříve zmíněné. WorkerTento modul obsluhuje příchozí spojění jak pomocí procesů, tak i vláken. Vlákna spouští z každého procesu potomka podle direktivy ThreadsPerChild, která určuje kolik maximálně vláken může každý potomek spustit. Maximální počet vláken, které jsou povoleny modulu vytvořit určuje direktiva ThreadLimit. U procesů určuje jejich maximum ServerLimit. PerchildModul nabízející velmi zajímavé funkce, který je v Apachi verze 2.0 je označen jako nedokončený a nejnovější verzi 2.2 již neexistuje. I přesto si jej představíme, pro jeho zajímavou vlastnost, kterou je obsluha požadavků pod různými ID. Stejně jako předchozí worker používá jak procesy, tak vlákna. Počet procesů je však pevně dán direktivou NumServers. Hlavní práci modulu provedou direktivy ChildPerUserID a AssignUserID. První z nich slouží k určení kolik procesů se má pro zadanou kombinaci uživatele a skupiny spustit. Následující se použije ve VirtuálHostu, kterému tak určíme pod jakou uživatelem a skupinou má běžet. NumServers 10 ChildPerUserID linpro linpro 5 ChildPerUserID filbar filbar 2 ChildPerUserID joomla joomla 2 <VirtualHost *:80> ServerName linpro.cz AssignUserID linpro linpro </VirtualHost> <VirtualHost *:80> ServerName filbar.cz AssignUserID filbar filbar </VirtualHost> <VirtualHost *:80> ServerName linpro-test.cz AssignUserID joomla joomla </VirtualHost> <VirtalHost *:80> ServerName corki.info </VirtualHost> V předcházejícím příkladě je tedy spuštěno 10 serverových procesů, 5 pod uživatelem/skupinou linpro/linpro, 2 pod filbar/filbar a joomla/joomla a jeden je ponechán pro původního uživatele a skupinu specifikované direktivami User, Group. Doména linpro.cz má vyhrazeno tedy 5 procesů a běží pod uživatelem skupinou linpro, filbar.cz a linpro-test mají po dvou procesech a běží pod odpovídajícími uživateli/skupinami a poslední VirtualHost má jeden proces a běží pod výchozím uživatelem a skupinou. Každý proces si může podle potřeby spouštět vlákna, jejichž maximální počet je nastaven direktivou MaxThreadsPerChild. Jedinou nevýhodou tohoto řešení je, že apache musí být spuštěn pod uživatelem root. Jak vidíme jedná se o velmi zajímavý modul a je opravdu velká škoda, že v Apachi 2.2 se už nenachází. OstatníNásledující moduly jsou experimentálními variantami modulu worker, do kterého přidávají různé zajímavé vlastnosti. Všechny používají stejné direktivy jako worker a zkouší použít návrhový vzor Leader/Followers, což by se do češtiny dalo přeložit jako Vedoucí/Následující. Poslední modul Apache 2.0 threadpool vytváří frontu z čekajících vláken, kterým postupně předává přicházející požadavky. V Apachi 2.2 se nachází také jeden nový experimentální modul jménem event, který se snaží vylepšit worker při přijímání požadavků, kdy je použito speciální vlákno pro příjem nových požadavků i těch, které se právě vyřizují. ZávěrV našem seriálu jsme si prošli skoro celou konfiguraci vynikajícího web serveru Apache, při čemž jsme se zaměřili hlavně na verzi 2.0, která je nyní v produkční fázi. Zabývali jsme se běžnými i méně obvklými aspekty jeho konfigurace. Doufám, že se vám tento seriál líbil a přiučili jste se z něj nečemu novému.
Powered by !JoomlaComment 3.22
3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
||||||||
| Další > |
|---|