mod_performance
Co tento modul představuje. Je to běžný modul Apache 2.x pro Linux. Z dokumentace k němu:
- modul je určen pro sběr a ukládání statistik o využívání zdrojů (CPU a paměť, doba zpracování skriptu) webovým serverem Apache 2.2;
- modul umožňuje analyzovat shromážděná data.
Co to všechno znamená? Znamená to, že umožňuje sledovat, kolik zdrojů spotřebuje požadavek přijatý webovým serverem. Při každém zpracování ukládá následující informace:
- virtuální host, kterému byl požadavek odeslán;
- soubor, který je vyžadován;
- URI požadavku;
- zatížení CPU v %;
- využití paměti v %;
- doba zpracování požadavku.
A shromážděné statistiky umožňuje analyzovat. Jako databáze pro ukládání a analýzu se používá SQLite.
Jako analyzátor využívání zdrojů se nepoužívá scoreboard, jako u mod_status a rozšíření perl, ale glibtop.
Modul umožňuje sledovat jak absolutně všechny požadavky, tak i konkrétní, filtrované podle pravidla pomocí regulárních výrazů. Přesněji řečeno, modul VŽDY zpracovává pouze ty požadavky, které odpovídají filtru obsahujícímu regulární výraz.
Jak zobrazit shromážděná data
Modul poskytuje dva rozhraní pro zobrazení a analýzu dat: 1) globální; 2) tzv. per-host.
Každé rozhraní je přiřazeno k handleru:
user-status — per-host
performance-status — globální
Přístup k rozhraním se nastavuje stejně jako u modulu mod_status, tj.:
<Location /perf-status>
Order allow,deny
SetHandler performance-status
Allow from 1.1.1.1
</Location>
Globální rozhraní umožňuje prohlížet a analyzovat shromážděná data pro všechny virtuální hosty, zatímco rozhraní per-host zobrazuje a analyzuje pouze informace o hostiteli, ke kterému je rozhraní přiřazeno, například pokud zavoláte hostitele test.test.test/user-status, veškerá zobrazovaná statistika se bude týkat pouze tohoto hostitele. Statistika o jiných hostitelích se nezobrazí.
Globální rozhraní pro správu modulu vypadá, jak je uvedeno na obrázku níže:

V hlavním formuláři, na obrázku, lze vidět následující pole:
Mode – režim zobrazení dat.
Period – počet dní, období zobrazení nebo analýzy dat počínaje začátkem aktuálního dne.
Period begin – začátek období ve formátu YYYY-MM-DD hh:mm:ss.
Period end – konec období ve formátu YYYY-MM-DD hh:mm:ss.
Pokud jsou zadány Period begin a Period end, zobrazují se data omezená těmito parametry a pole Period je ignorováno. V opačném případě je analyzovaná část určena parametrem Period.
Hostname(SQL) – filtr, který zobrazuje data pouze pro uvedený hostitel. Syntaxe volání je podobná konstrukci LIKE v SQL. Tedy pokud zadáte „%test“, budou vybrány všechny hostitele končící na „test“.
Script name(SQL) – podobně jako předchozí parametr, ale analyzuje se název volaného skriptu.
URI(SQL) – podobně jako předchozí parametr, ale analyzuje se URI požadavku.
Graph Mode(Y/N) – zobrazovat graficky nebo textově.
Přibližný výstup dat vypadá takto:

Hostitel uvedený v příkladu na obrázku je zcela testovací; pokud se shoduje se skutečným, omlouvám se.
Grafický režim zobrazení je uveden na obrázku níže:

Režimy analýzy
Show output without analytics – zobrazit shromážděné informace bez analýzy, filtrované podle hostitele, skriptu a URI (grafický i textový režim).
Maximal %CPU – zobrazit pouze záznamy s maximální hodnotou %CPU (s ohledem na filtry).
Maximal memory % – zobrazit pouze záznamy s maximální hodnotou %memory (s ohledem na filtry).
Maximal execution request time – zobrazit nejdéle běžící skript.
Host requests statistics – zobrazit statistiku požadavků na hostitele seřazenou sestupně (v % z celkového počtu s ohledem na filtry).
Execution history screen(use Period begin) – umožňuje vypočítat seznam běžících požadavků pro daný čas.
Number of requests per domain – zobrazit statistiku požadavků na hostitele seřazenou sestupně (ne v procentech, ale jako absolutní počet).
Average usage per host – zobrazit průměrnou zátěž serveru každým hostitelem (součet % CPU, součet % MEMORY, součet doby provedení skriptů, průměrné % CPU za období, průměrné % využití paměti, průměrná doba provedení skriptů).
Nebudu podrobně rozepisovat všechny detaily a některé režimy ponechám bez dalšího komentáře.
Jak nainstalovat modul
Zde uvádím příklad instalace pro rpm systémy. Všechny akce je třeba provádět pod uživatelem root.
1) Nainstalujte potřebné balíčky pro kompilaci:
yum install httpd-devel apr-devel libgtop2-devel sqlite-devel gd-devel
2) Vytvořte dočasnou složku pro zdrojové kódy:
mkdir ~/my_tmp cd ~/my_tmp
3) Stáhněte zdrojové kódy modulu, rozbalte archiv a přejděte do rozbalené složky:
wget http://lexvit.dn.ua/utils/getfile.php?file_name=mod_performance_tar201104233487.gz -O mod_performance.tar.gz tar zxvf mod_performance.tar.gz cd mod_performance/
4) Sestavte modul:
make
5) Na upozornění (warning) se nemusíte dívat. Důležité je, aby nedošlo k chybě (error). Pokud se vše úspěšně sestavilo, pak:
make install
nebo
cp .libs/mod_performance.so <путь куда копировать>
Konfigurace Apache
Konfigurace bude provedena pro standardní instalaci Apache, tj. moduly jsou umístěny v adresáři /etc/httpd/modules, existuje adresář /etc/httpd/conf.d/ a je připojen v /ect/httpd/conf/httpd.conf.1) vytvořit konfigurační soubor modulu:
touch /etc/httpd/conf.d/mod_performance.conf
2) vložit do něj:
LoadModule performance_module modules/mod_performance.so <IfModule mod_performance.c> PerformanceHistory 5 PerformanceEnabled On PerformanceMaxThreads 80 PerformanceScript \.php PerformanceStackSize 1 PerformanceUseCanonical On <Location /admin-status> Order allow,deny SetHandler performance-status Allow from 1.1.1.1 </Location> </IfModule>
3) uložit soubor a restartovat Apache:
service httpd restartKonfigurační soubor slouží pouze jako příklad. Všechny parametry musí být přizpůsobeny konkrétnímu serveru.
Výše uvedená konfigurace modulu umožňuje sledovat požadavky na php skripty.
Popis všech konfiguračních parametrů lze najít v dokumentaci modulu.
