6.1 Optimalizace výkonu
Optimalizovat výkon WWW serveru budete potřebovat jen u velmi vytížených WWW serverů. Implicitní konfigurace a kompilace by měla vyhovovat většině nasazení WWW Serveru. Přesto je dobré dodržovat několik zásad, které mohou běh WWW serveru optimalizovat. Optimalizace může probíhat na třech úrovních:
V tomto textu se seznámíme pouze s některými pravidly. Pro podrobnější informace je vhodné nahlédnout do http://httpd.apache.org/docs-2.0/misc/perf-tuning.html. Následující direktivy konfigurace mohou ovlivnit výkon WWW serveru:
|
Úvod |
Direktiva AllowOverride, která umožňuje využívat soubory .htaccess umístěné v adresářích pro dodatečnou (uživatelskou) konfiguraci nutí (pokud není nastavena na None), při každém dotazu klienta, www server načítat soubor .htaccess a přizpůsobit mu chování serveru. Tato činnost zpomaluje běh WWW serveru. |
AllowOverride |
Direktiva DirectoryIndex může být nastavena obecně pro všechny soubory dle nějaké masky. Např. DirectoryIndex index, která bude jako rejstříky zobrazovat všechny soubory jménem index bez ohledu na příponu. Naneštěstí i tato operace zpomaluje běh serveru. Daleko vhodnější je explicitně uvést seznam všech možných rejstříků. Na druhou stranu se tak zbavujeme možností vyjednávání o obsahu. |
DirectoryIndex |
Direktiva Options s parametry FollowSymLinks a FollowSymLinksIfOwnerMatch vynucuje spouštění dalších příkazů OS a tím zpomaluje běh WWW serveru. Proto pokud to není nezbytně nutné je vhodnější symbolické linky v případě WWW serveru nevyužívat. |
Options FollowSymLinks FollowSymLinksIfOwnerMatch |
Direktiva HostnameLookups umožňuje nastavit překlad IP adresy v reálném čase. V Log souboru se pak místo IP objevuje jméno počítače (pokud bylo zjistitelné). To je sice pěkné, ale v reálném provozu to znamená neustálé dotazování DNS serveru na překlad IP na jméno. Podobně je to v případě direktiv Allow from a Denny from. Proto raději za všech okolností volte IP místo jména a nepovolujte HostnameLookups. Překlad IP adres na jména v LogSouboru můžete provést dodatečně s využitím programu logresolve (kompiluje se implicitně s Apache). |
HostnameLookups |
Direktiva KeepAliveTimeout udává jaká je maximální doba po kterou může jeden proces apache zpracovávat jeden požadavek od klienta. Tato direktiva je velmi problematická. V případě, že její hodnotu nastavíte na relativně vysokou, můžete výrazně zatížit server např. v okamžiku, kdy uživatel požádá o zpracování nějakého skriptu ve kterém je chyba (a dojde např. zacyklení a zabrání procesoru na 100%). Toto zatížení pak bude trvat tak dlouho jak dlouhý je Timeout. V případě více klientů, kteří takto požádají o chybný skript, může dojít k úplnému zahlcení serveru a pro další klienty se server chová jako nedostupný. Na druhou stranu, pokud hodnotu nastavíte na příliš nízkou, nemusí se v daném limitu podařit vyřídit požadavek, a klient obdrží zprávu Timeout. |
KeepAliveTimeout |
Velmi důležitá je konfigurace počtu běžících pocesů Apache a s tím související direktivy. Následující konfigurace se této problematice věnuje.
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 MaxClients 150 MaxRequestsPerChild 1000 </IfModule> V konfiguračním souboru se můžete setkat s několika sekcemi, které se této části konfigurace věnují. Vždy se však uplatňuje jen jedna z nich. Výše uvedená se opírá o modul prefork.c. Tento modul se uplatňuje na OS Linux/Unix. Na MS Windows se uplatňuje sekce mpm_winnt.c.
Direktiva StartServers udává kolik se má po startu Apache do paměti počítače načíst (spustit) procesů apache. |
StartServers, MinSpareServers, MaxSpareServers, MaxClients, MaxRequestsPerChild |
SAMOSTATNÝ ÚKOL 18 |
|
|
Pokuste si sepsat na čem všem závisí rychlost zpracování požadavku klienta a co vám tedy může ovlivnit Timeout. |
Timeout |