mod_performance
Šta ovaj modul predstavlja. To je običan Apache 2.x modul za Linux. Iz dokumentacije uz njega:
- modul je namenjen prikupljanju i čuvanju statistike o korišćenju resursa (CPU i memorija, vreme izvršavanja skripte) od strane Apache 2.2 web servera;
- modul omogućava analizu prikupljenih podataka.
Šta sve ovo znači? To znači da omogućava praćenje toga koliko resursa troši zahtev koji stigne web serveru. Svaki put se čuva sledeća informacija:
- virtualni domaćin kojem je stigao zahtev;
- datoteka koja se zahteva;
- URI zahteva;
- opterećenje CPU-a u %;
- korišćenje memorije u %;
- vreme obrade zahteva.
A za akumuliranu statistiku — omogućava njenu analizu. Kao baza podataka za čuvanje i analizu koristi se SQLite.
Kao analizator korišćenja resursa, koristi se ne scoreboard, kao kod mod_status i perl ekstenzija, već glibtop.
Modul omogućava praćenje kako apsolutno svih zahteva, tako i konkretnih, filtriranih po pravilu pomoću regularnih izraza. Tačnije rečeno, modul UVEK obrađuje samo one zahteve koji odgovaraju filteru koji sadrži regularni izraz.
Kako pregledati akumulirane podatke
Modul pruža dva interfejsa za pregled i analizu podataka: 1) globalni; 2) tzv. per-host.
Svaki interfejs je vezan za handler:
user-status — per-host
performance-status — globalni
Pristup interfejsima se konfigurira isto kao i kod mod_status modula, tj.:
<Location /perf-status>
Order allow,deny
SetHandler performance-status
Allow from 1.1.1.1
</Location>
Globalni interfejs omogućava pregled i analizu akumuliranih podataka za sve virtualne domaćine, dok per-host interfejs prikazuje i analizira samo informacije o domaćinu kojem je interfejs vezan, na primer, ako se pozove domaćin test.test.test/user-status, sva prikazana statistika će se odnositi samo na ovaj domaćin. Statistika za druge domaćine neće biti prikazana.
Globalni interfejs za upravljanje modulom izgleda kao što je prikazano na slici ispod:

У главној форми, на слици се могу видети поља:
Mode – режим приказивања података.
Period – број дана, период приказивања или анализе података, почевши од почетка тренутног дана.
Period begin – почетак периода, задат у формату YYYY-MM-DD hh:mm:ss.
Period end – крај периода, задат у формату YYYY-MM-DD hh:mm:ss.
Ако су задати Period begin и Period end, тада се приказују подаци ограничени тим параметрима, а поље Period се игнорише. У супротном, анализирани део се задаје параметром Period.
Hostname(SQL) – филтер, приказује податке само за наведени хост. Синтакса позива је слична конструкцији like у SQL-у. Дакле, ако се зада „%test“, биће изабрани сви хостови који се завршавају на „test“.
Script name(SQL) – слично као претходни параметар, али се анализира име позваног скрипта.
URI(SQL) – слично као претходни параметар, али се анализира URI захтева.
Graph Mode(Y/N) – приказивање графиком или текстом.
Приближан изглед излазних података је следећи:

Хост наведен у примеру на слици је у потпуности тестни; ако се поклапа са стварним, извињавам се.
Графички режим приказивања приказан је на слици испод:

Режими анализе
Show output without analytics – приказати сакупљене информације без анализе, филтриране према хосту, скрипти и URI-ју (графички и текстуални режим).
Maximal %CPU – приказати само записе са максималном вредношћу %CPU (узимајући у обзир филтрирање).
Maximal memory % – приказати само записе са максималном вредношћу %memory (узимајући у обзир филтрирање).
Maximal execution request time – приказати скрипт са најдужим временом извршавања.
Host requests statistics – приказати статистику захтева ка хостовима, сортирану опадајуће (у % у односу на укупан број, узимајући у обзир филтере).
Execution history screen(use Period begin) – омогућава израчунавање листе извршених захтева за наведено време.
Number of requests per domain – приказати статистику захтева ка хостовима, сортирану опадајуће (не у процентима, већ као број).
Average usage per host – приказати просечно оптерећење сервера по сваком хосту (збир % CPU, збир % MEMORY, збир времена извршавања скрипти, просечан % CPU за период, просечан % коришћења меморије, просечно време извршавања скрипти).
Нећу улазити у детаље и неке режиме ћу оставити без пажње.
Како инсталирати модул
Овде наводим пример инсталације за rpm-системе. Све радње треба изводити под корисником root.
1) Инсталирајте неопходне пакете за компилацију:
yum install httpd-devel apr-devel libgtop2-devel sqlite-devel gd-devel
2) Креирајте привремену фасциклу за изворни код:
mkdir ~/my_tmp cd ~/my_tmp
3) Преузмите изворни код модула, распакујте архиву и пређите у распаковану фасциклу:
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) Компилујте модул:
make
5) Не обраћајте пажњу на warning поруке. Кључно је да нема error порука. Ако је све успешно компилирано, онда:
make install
или
cp .libs/mod_performance.so <путь куда копировать>
Конфигуришемо Apache
Konfiguracija će se vršiti za standardnu instalaciju Apache-a, tj. moduli se nalaze u direktorijumu /etc/httpd/modules, postoji direktorijum /etc/httpd/conf.d/ i on je povezan u /ect/httpd/conf/httpd.conf.
1) kreirajte fajl konfiguracije modula:
touch /etc/httpd/conf.d/mod_performance.conf
2) ubacite sledeće u njega:
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) sačuvajte fajl i restartujte Apache:
service httpd restart
Fajl konfiguracije služi samo kao primer. Svi parametri moraju biti prilagođeni specifičnom serveru.
Gore navedena konfiguracija modula omogućava praćenje zahteva ka php skriptama.
Opis svih parametara konfiguracije možete pročitati u dokumentaciji modula.
