Jaký vliv má výběr akcelerátoru a verze PHP pro běh Drupalu? Zde jsou čísla

Protože se poslední dobou snažím co nejvíce optimalizovat rychlost většiny svých webů, začal jsem si hrát také s různými akcelerátory, Některé používají i zavedené hostingy. U kterých je předpoklad, že vám tam Drupal poběží nejrychleji? Měřil jsem, zapisoval do tabulky a zde je výsledek.

Reklama

Před nějakou dobou Wedos oznámil, že přechází na OPcache a dopředu všechny varoval, aby si vyzkoušeli, zda jim jejich webové aplikace poté poběží bez problémů. Pokud zde máte Drupal, pak asi víte, že by taková změna neměla mít žádný negativní vliv.

Akcelerátor OPcache je dostupný jako součást PHP od verze 5.5.x, doinstalovat jej lze v případě potřeby i do starších verzí. Po pravdě řečeno, na hostingu se obvykle setkávám s tím, že pro PHP 5.4 používají APC nebo nějaký další akcelerátor, ale ne OPcache.

Poznámka: Akcelerátory fungují tak, že si v paměti udržují přeložené PHP skripty, které tak nemusejí opětovně načítat z disku a následně znovu překládat, jen jej rovnou spustí.

Na svých serverech momentálně používám jak PHP 5.4, tak novější PHP 5.5. Starší verzi provozuji v kombinaci s APC, novější pak s OPcache, což se samozřejmě nabízí. A musím říci, že zrychlení je to úžasné.

Hodně je to znát u aplikací na Symfony 2, se kterým se pomalu začínám kamarádit, ale také na Drupalu. Až mě udivuje, že u svých klientů stále nacházím servery, které žádný akcelerátor nevyužívají a spoléhají jen na rychlý procesor. Ty weby pak podle toho také přiměřeně rychle (tj. pomalu) běží.

OPcache, APC, XCache a eAccelerator s Drupalem řečí čísel

Rozhodl jsem se proto udělat takový malý test, který by mi ukázal, jestli má použití OPcache pro Drupal opravdu takový význam, když se ze subjektivních dojmů převede do číselné reality. A zároveň mě zajímalo, jak na tom bude v porovnání s ostatními akcelerátory.

Čísla v níže uvedené tabulce neberte jako absolutní. Měření probíhalo na stroji, který nebyl zatížen jiným webovým provozem a v podstatě ani nefunguje, jako server. Použil jsem dvě verze PHP v různých kombinacích.

Pro všechna měření jsem použil výchozí anglickou instalaci Drupalu s doplněným modulem Devel. S jeho pomocí jsem vygeneroval 1000 obsahových uzlů s aliasy a maximálně deseti komentáři ke každému z uzlů.

Po dokončení měření (údaje poskytnul modul Devel a rychlost načítání anonyma Apache Benchmark) jsem totéž zopakoval s použitím modulu Authcache, který umožňuje Drupalu servírovat nacacheované stránky i pro přihlášené uživatele. Zvedne sice počet dotazů do databáze, ale výrazně se zrychlí odezva webu v zátěži, jak ukazuje Apache Benchmark.

Zde je tedy tabulka s výsledky (kliknutím zvětšíte):

Drupal a PHP akcelerátory

Pár poznámek k naměřeným údajům

Trošku mě překvapilo, že je rozdíl v počtech dotazů uskutečněných při vykreslování titulní strany webu (adresa /node, tj. přehled článků) při použití PHP 5.5 a PHP 5.4. Nedovedu si to vysvětlit a opakovaně jsem prováděl nové instalace Drupalu pro ověření. Přitom při použití Authcache je v obou případech počet dotazů do databáze stejný, jak by to logicky mělo být.

Pokoušel jsem se také o měření v kombinaci Authcache a FileCache, tedy ukládání cache do souborů místo do databáze. V praxi se to ukazuje jako rychlejší řešení. Na testovacím stroji však při použití Apache Benchmark nebyl žádný viditelný rozdíl v tom, jak se Authcache nastaví, proto čísla v přehledu nenajdete.

Z výsledků jasně vyplývá, že nejlepším řešením pro rychlé načítání Drupalu je nová verze PHP s podporou OPcache. Jednak se výrazně zrychlí servírování webových stránek v zátěži, ale rovněž klesne spotřeba paměti při vykreslování stránek. To je samozřejmě cenné při větší zátěži webu.

Shrnuto a podtrženo: Máte-li k dispozici PHP 5.5 použijte OPcache a Drupal s modulem Authcache. V případě PHP 5.4 se jako nejlepší jeví řešení s APC, nechcete-li instalovat OPcache dodatečně.

Poznámka: Možná vám v testu chybí údaje o Memcache nebo Varnish, případně modul Boost. To mohu změřit někdy jindy. Tady bylo cílem ukázat, jaký vliv mají akcelerátory na zpracování webu s Drupalem. Nikoli si povědět, jak optimalizovat server pro rychlejší načítání webů s tím, že maximálně eliminujeme vůbec spouštění PHP. Navíc pro Memcache nebo Varnish už potřebujete vlastní server. Můj test vám může pomoci s rozhodnutím, který hosting zvolit podle toho, jaký používá akcelerátor.

Tagy: 

Reklama

Komentáře

Omlouvám se, dotaz se týká formy článku a ne jeho obsahu. Jak jste vložil za perex blok (s reklamou)? Já jsem se snažil vložit blok fotogalerie k článku za perex, ale nepodařilo se mi to. Děkuji Milan

Udělal jsem si úpravu v tématu vzhledu, která v šabloně vloží za první nalezený odstavec region pro vykreslení bloků. To proto, že nemám samostatní políčko na perex. Holt, Maxiorel vznikal v dobách, kdy to takto bylo lepší.

Dnes bych to řešil jednoduše tím, že pole na perex bude oddělené od pole pro tělo článku. Pak bych vzal Display Suite a prostě poskládal perex, pak block field s reklamou a zbytek obsahu.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Dobrý den. Pro ujasnění: tím oddělením pole pro perex myslíte "fyzicky" samostatné pole, nikoliv jen "logicky" oddělené značkou např. v IMCE? Díky, vyzkouším a rád se pak podělím o zkušenosti. Milan

Ano, samostatné políčko.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Dobrý den, níže je dnešní odpověď na můj dotaz ohledně OPcache.
S pozdravem Milan

Dobrý den, momentálně OPcache a jiné akcelerátory testujeme. Odhaduju to na několik měsíců než to nasadíme, předpokládám, že se to určitě bude týkat PHP 5.5 a vyšších verzí.

_________________
Jan Vítek
Webhosting C4
http://www.c4.cz/

Přidat komentář