Už jste nasadili OPcache pro rychlejší weby na PHP? Sledujte její využití

Od PHP 5.5 je přímo v distribuci PHP obsažen akcelerátor OPcache, který umožňuje významné zrychlení webů využívajících právě PHP. Vřele doporučuji na novou verzi přejít, zejména u redakčních systémů. A pokud jste už přešli, mám tip na dva monitorovací nástroje sledující využití OPcache.

Není to tak dlouho, co jsem tu popisoval zprovoznění virtuálního serveru u Linode a zmiňoval jsem tam instalaci PHP akcelerátoru APC. Ten samozřejmě není jediný svého druhu. Tyto zrychlovače fungují podobně. Kód v PHP je totiž normálně vždy opakovaně načítán ze souboru a poté překládán a zpracováván. Akcelerátory si v operační paměti udržují již přeložený kód, takže ten je hned vykonán, odpadá jeho načítání a překlad, čímž je celé zpracování načítané stránky rychlejší.

Znatelné je to zejména u webů postavených na redakčních systémech jako jsou WordPress, Drupal nebo Joomla. Ty se skládají z velké spousty souborů PHP, které se musí zpracovat při každém načtení webové stránky, což samozřejmě chvíli trvá.

Problémem APC je skutečnost, že již delší dobu neměl žádné nové vydání a jeho vývoj je tak prakticky mrtvý. Jak jsem zmínil, jsou tu i jiné akcelerátory a z hlediska budoucího vývoje mi nejzajímavější přijde sledovat OPcache. Používáte-li PHP 5.4 nebo starší (ovšem cokoli staršího jak 5.3 je špatně), můžete OPcache doinstalovat na server dodatečně. Od PHP 5.5 je OPcache již standardní součástí distribuce PHP.

Nebudu tu popisovat jeho instalaci do starších verzí. U PHP 5.5 je to v pohodě, stačí běžným způsobem nainstalovat PHP, jak jsem si nedávno ověřil na nové instalaci Debianu. Jediný problém tam byla skutečnost, že Wheezy v sobě má standardně PHP 5.4 a pro novější verze bylo nutné přidat do repozitáře zdroje z Dotdeb.

Proč sledovat využití OPcache?

Zatím jsem nijak nesrovnával, zda je u Drupalu efektivnější APC nebo OPcache, články na internetu mluví pro modernější OPcache. Nicméně jsem si zatím hrál s tím, jak sledovat její využití. Zatímco APC má speciální monitorovací stránku, využití OPcache můžete sledovat přímo pomocí funkcí v PHP. Každý si tak může napsat vlastní monitorovací nástroj.

Na druhou stranu proč se tím zdržovat, když už to někdo udělal za vás. Monitorovacích nástrojů pro OPcache je celá řada. Níže představím dva vybrané.

Možná ale přemýšlíte o tom, proč využití OPcache sledovat, vždyť stačí, když funguje a dělá, co má. Právě. Jednak budete chtít vědět, zda cache opravdu funguje a za druhé, bude vás zajímat její využití. V konfiguraci PHP totiž můžete upravit množství paměti, kterou má OPcache k dispozici pro udržování přeložených PHP skriptů.

Pokud je stále z převážné části volná, můžete ji zmenšit a uvolněnou paměť využít serverem pro jiné procesy. Nebo naopak, pokud se paměti nedostává a statistiky ukazují nízkou hodnotu hit rate, pak se skripty načítají z určité části opět ze souborů a weby se zpomalí. Pak je na zváženou, zda paměť pro OPcache v php.ini nenavýšit.

OPcache Status

Jako první jsem vybral z nabídky monitorovacích skriptů OPcache Status od Rasmuse Lerdorfa, tedy jednoho z hlavních lidí stojících za vývojem PHP. Stejně jako ve druhém případě se jedná o jednoduchý nástroj umístěný v jednom souboru, který si načtete přes webový prohlížeč.

OPcache Status vám zobrazí číselné informace o nastavení OPcache v několika záložkách a kromě toho také statistiku zpracování konkrétních PHP souborů. Tu najdete na záložce Scripts. Kliknutí na Visualise Partition pak zobrazí zpracované PHP skripty v podobě vizualizace jejich umístění na disku serveru.

Vedle tabulky je ještě zobrazen jednoduchý graf ukazující využití paměti, počty klíčů, počty zásahů cache a restarty. Skript si stáhnete z Githubu.

OPcache Status

OPcache GUI

Druhý monitoring OPcache se rovněž sestává z jediného skriptu, který stačí umístit na web. Ten všechny informace zobrazí v jedné dlouhé tabulce a nabízí i sledování OPcache v reálném čase. Kromě toho umí poslat příkaz k vyprázdnění cache, což se může někdy hodit. OPcache GUI najdete opět na Githubu.

OPcache GUI

Pozor na zabezpečení

Sledovací skripty byste samozřejmě neměli dát jen tak viditelně zvenčí. Zvláště ne OPcache GUI, který umožňuje mazání cache. Já toto řeším speciální adresou na serveru, ve které mám umístěny jednoduché, jednosouborové skripty. Kromě těchto zmíněných třeba ještě Adminer pro práci s databází. Vše pak mám zaheslováno přes .htpasswd.

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

@maxiorel na Twitteru

Maxiorel na Twitteru