November 3, 2009

Otesánok – druhé meno pre vašu PHP aplikáciu?

PHP aplikácii, pluginov, rozšírení a iných skriptov, sa nám dnes po svete potuluje viac než dosť. Autor dostane nápad, napíše kód a hurá. Pekne mu funguje na jeho notebooku s 1 GB RAM a php.ini memory limitom zdvihnutým na 128 MB.

Milý autor si ani nevšimne, ako mu aplikácia rastie, kysne a žerie drahocenné kilobajty pamäte. Problém nastane, keď sa jeho Otesánok vyberie do sveta. Najskôr ho autor veľmi jemne a decentne zavestí na nejaký webhosting.

Lenže tu nastane problém. Server má povolených len 25 MB na skript. Otesánok dostane bolesti brucha a odmieta spustiť čokoľvek. Ešte horší prípad však nastane, keď sa takýchto Otesánkov zíde viac. Systémový administrátor rozverne povolil 128 MB RAM a Otesánkovia chrochtajú blahom. Vždy sa jeden zobudí, vygeneruje stránku a ide spať.

Lenže tu nastane druhý problém. Do serveru sa oprú roboti. Google, Yahoo, Microsoft a im podobná robotická zberba. Treba predsa zvyšovať SEO. Neštastníci. Oni zobudia všetkých Otesánkov naraz. Začne vojna o zdroje. Apache nestíha Otesánkov upratovať na swap. Zo swapu sa mu neustále vracajú a dožadujú sa ďalšej a ďalšej pamäte. Hrôza, des, zmar a load average 78.

Veď je to tak jednoduché zístiť, koľko vaša aplikácia spotrebuje pamäte:

echo memory_get_usage() . "\n";

Dokonca PHP prináša so sebou sledovanie celého priebehu vykonávania skriptu a môžete si vypísať, aké bolo maximum v spotrebe bajtov počas behu skriptu:

echo memory_get_peak_usage() . "\n";

Jednoduché, účinné. Monitorujte stav pamäte a nenechajte, aby sa vaša aplikácia zmenila na Otesánka.

Dokumentácia memory_get_usage, memory_get_peak_usage