Domů arrow Pokročilé arrow Apache arrow Upravujeme výkon
Upravujeme výkon PDF Tisk E-mail
Zhlédnutí: 2326
Hodnocení čtenářů: / 3
SlabéVynikající 
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čí.

Prefork

Jedná 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é.

Worker

Tento 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.

Perchild

Modul 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ěr

V 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.

Komentářů
Přidat Nový Hledat RSS
Přidat komentář
Jméno:
Email:
 
Website:
Název:
UBBKód:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
Další >

Zapomenuté heslo
Nemáte účet? Vytvořte jej!
Skype: My status bartfil
Jabber: bartmann@rupyhost.cz

Doporučujeme

Příběhy psů z útulků