Webové akcelerátory využívajú všetky veľké weby ako Facebook či Twitter. Vďaka nim sa pri opakovanom prehliadaní zobrazujú rýchlejšie. K najpopulárnejším technológiám na akceleráciu patria Memcache a Varnish. Od nového roku ich máte k dispozícii aj u nás.
Použitie akceleračných techník vplýva pozitívne nielen na prevádzku webu, ale aj na stabilitu hostingu. Request vybavený na priamo na strane klienta bude vybavený rýchlejšie, ako request, ktorý vybaví nejaký vzdialený server. Cachovaná web stránka je býva odolnejšia voči prípadným problémom s výkonom web-serveru alebo databázového serveru.
Memcache
Memcache je distribuovaná pamäťová cache resp. key = value databáza. Do tejto databázy sa vloží pod určitým kľúčom hodnota a následne sa pomocou tohto kľúča daná hodnota znova vytiahne. Je to veľmi rýchle a veľmi jednoduché. Memcache sa najčastejšie používa na ukladanie výsledkov z databázy, takže sa lepšie hodí pre dynamicky generované web stránky, ako sú rôzne CMS alebo e-shopy. Je však možné do nej ukladať akékoľvek dáta do veľkosti 1 MB/kľúč. Podpora Memcache sa nachádza v každej webovej aplikácii, ktorá to myslí s produkčným nasadením aspoň trošku vážne.
Na našom hostingu sa nachádza Memcache na adrese localhost:11211. Programátorom webových aplikácií sa môže hodiť materiál pre programovanie pomocou Memcache. Ak viete, že danú hodnotu, ktorú mate v databáze, budete používať častejšie a že sa nemení, rovno ju môžete dať do Memcache.
Od minulého roka máme takéto upravené nasadenie použité pre PHP sessions, ktoré sme mali skôr na databázovom serveri. Lagovanie na db serveri spôsobovalo lagovanie na celom hostingu. Problém sme vyriešili použitím Memcache serverov, do ktorých vkladáme PHP sessions. Od nasadenia sme už takýto problém nezaznamenali.
Varnish
Varnish je veľmi rýchla reverzná proxy určená najmä na cachovanie statického obsahu, buď priamo do RAM alebo lokálne na disk. Reverzná proxy sa stavia pred jeden alebo viac webových serverov, na ktoré môže – ale nemusí – rozdeľovať záťaž. Na tieto servery preposiela požiadavky a pokiaľ už daný obsah má u seba, vybaví požiadavku miesto web-servera. Tým zníži nároky na web server, ktorý sa môže venovať iným požiadavkám. Varnish je teda skvelý na cachovanie obrázkov, HTML, javascriptov, CSS – skrátka statického obsahu.
V našom prípade bolo treba prepojiť Varnish s CDB databázou. Nebolo to úplne priamočiare, keďže Varnish vo svojom vlastnom jazyku CDB databázu nepodporuje. Našťastie podporuje jazyk C, takže bolo možné podporu pre CDB databázu doprogramovať. Nutnosťou bola možnosť zapnúť alebo vypnúť ho podľa potreby. To sa rieši na úrovni DNS systému. Pre spustenie Varnishu stačí zmeniť adresu stránky na IP 195.210.29.47. Pokiaľ si len chcete vyskúšať, ako bude stránka fungovať cez Varnish, nemusíte nič meniť, stačí si nastaviť svoj hosts súbor na IP adresu 195.210.29.47 pre doménu, na ktorej to chcete otestovať.
PHP akcelerácia
Treťou technológiou, ktorú na našich serveroch využívame už dávnejšie, je PHP akcelerácia. My používame eAccelerator. Tento PHP akcelerátor preloží prvýkrát zdrojový kód PHP aplikácie do bytekodu a ďalej používa už priamo ten. Spôsobí tým rýchlejšie spracovanie, pretože potom už nie je potrebné neustále parsovať PHP skripty do bytekodu znova a znova pri každom requeste.
PHP akcelerácia je na PHP 4 je zapnutá defaultne. V prípade PHP 5 a PHP 5.3 ju treba najskôr zapnúť a pred nasadením do ostrej prevádzky web poriadne otestovať.
Rýchlejšie a stabilnejšie
Akcelerácia na vašom hostingu
Nasadenie Memcache-u a Varnish-u na našich serveroch nebolo vôbec jednoduché. Museli sme ich upraviť pre potreby zdieľaného hostingu, na ktorom existuje vedľa seba tisíce užívateľov s rôznymi aplikáciami. Všetky akcelerátory sa zapínajú cez WebAdmin. Vyberiete doménu, ktorú chcete spravovať, v ľavom menu kliknete na tlačidlo Web a následne na záložku HTTP akcelerácia. Zatiaľ ide len o BETA verziu, pretože sme to zatiaľ testovali len interne. Budeme radi ak nám dáte feedback, ako sa vám s akcelerátormi pracuje.
Pozor! Po aktivovaní Varnish-u dôjde k zmene prestane fungovať FTP, pretože sa začne používať iná IP adresa ako je uvedená v A-zázname. Po aktivovaní je preto potrebné použiť nejaký alternatívny spôsob pripájania na FTP.
Podrobnú verziu tohoto článku a všetky potrebné postupy nájdete na našej wiki.
Pripravujeme tiež článok o tom, ako spojazdniť Memcache na populárnych CMS a e-shopoch.
22 odpovedí na “Naspeedujte svoj web”
perfekne. K tomu ftp: staci si predsa nechat A zaznam http://ftp.domena.sk. smerovany na povodnu IP.
no na nasich DNS serveroch A zaznam pre http://ftp.domena.tld negenerujeme ale matchne sa s *.domena.tld ktory pri prepnuti na varnish sa cely presmeruje na danu IP adresu. Kto ma DNS inde a ma specialny zaznam pre http://ftp.domena.tld tak tento problem mat nemusi.
no bezim odskusat
o mod_pagespeed neuvažujete?
http://code.google.com/speed/page-speed/docs/module.html
ano ale podla toho co som o nom cital tak to je len integracia best practices ( napr.http://developer.yahoo.com/performance/rules.html ) do jedneho modulu. Techniky opisane v tomto dokumente je mozne aplikovat aj v prostredi nasho hostingu bez pouzitia tohto modulu.
Skoda, s mod_pagespeed je vsetko o hodne jednoduchsie 🙁
Preco Varnish, ked môžete ako reverse proxy použiť nginx? Alebo má Varnish nejake výhody?
S varnishom uz sme mali skusenosti z inych projektov a je primarne vyvijany pre tento ucel. V zasade sme mohli pouzit aj nginx rovnako ako aj apache, ale varnish sa nam na toto zdal lepsi kvoli roznym podpornym utilitam alebo podpory jazyka C v konfiguracnom subore cim su jeho moznosti takmer neobmedzene.
A varnish nemá problém s SSL? Ja som čítal kedysi ale možno to uz dorobili, že nepodporuje SSL a treba pred Varnish postaviť Pound alebo nginx ktoré nemajú problém s SSL.
Ano, varnish SSL nepodporuje a ani sa nechysta (https://www.varnish-cache.org/docs/trunk/phk/ssl.html). Kazdopadne sme postavili pred varnish program stud. Podla http://vincent.bernat.im/en/blog/2011-ssl-benchmark.html umoznuje lepsie skalovat nez nginx.
ako mate poriesenu bezpecnost dat ulozenych v memcache?
Kluce su prefixovane hostom, ale je mozne si cez .htaccess nastavit prefixovanie lubovolnym stringom takze bez znalosti tohto prefixu a kluca sa neda k hodnote dostat.
Samotny memcached server bol upraveny aby neinterpretovali niektore prikazy ako flushovanie vsetkych dat a vypis vsetkych dat a klucov.
Mozem poprosit o trochu podrobnejsi postup ako pouzit memcache vo svojom scripte….THX
Skus napr. toto: http://www.script-tutorials.com/how-to-use-memcache-with-php/
Dobrý den,
chci se zeptat lze zapnout Varnish když budu mít na hostingu přikoupenou vlastní IP (kvůli SSL certifikátu)?
Technicky to mozne je. Ak mate taky pripad, napiste na admin@ websupport.sk
V drupale som musel upravit dmemcache.inc riadok 133
$full_keys[$cid] = $_SERVER[‚SERVER_NAME‘].$full_key;
aby sa prefix zohladnoval. nastavenie prefixu v settings.php nepomaha pretoze pri citani je potom prefix zdvojeny.
A dalej, memcache statistics v drupale su zrejme za cely hosting.
tak som sa trochu unahlil.
objekty sa stale setovali do memcache.
za riadok 166 (memcache 7.x-1.0) som dal $key=str_replace($_SERVER[‚SERVER_NAME‘],“,$key);
a korektne zobrazovanie statistik $values[] = isset($results[$_SERVER[‚SERVER_NAME‘].$key]) ? ‚1‘: ‚0‘; (154)
Zdravim,
eaccelerator je fajnova vec, avšak bohužial ho máte nakonfigurovaný tak, že maže aj annotácie(komentáre)… A čo ak programátor použije napr. Doctrine 2, Symfony 2 a podobne. Tieto systémy využívajú anotácie (štandartnú vec v novších PHP) ! …myslím, že nárast výkonu je so smazanými komentármi zanedbateľný. RIEŠENIE: When compiling eAccelerator, specify the –with-eaccelerator-doc-comment-inclusion switch in the configure script… Takže čo teraz 😀 ?
Mám u vás iba menšie weby, takže problémy s rýchlosťou nemám. Čo ale nemôžem povedať o jednej vašej banskobytrickej konkurencii, hoci mám u nich weby ešte menšie. Ale čas exsprirácie domén sa blíži a sťahovanie wordpress webov mám zmáknuté 😉
Je tento článok stále aktuálny? Vo webadmine už dlhšiu dobu HTTP Akcelerácai (BETA) nie je. Ako momentálne zapnem/vypnem Varnish? Beží vôbec? Na špecifikáciách webhostingu som sa dočítal, že varnish by tam mal byť. Ale nedarí sa mi nájsť žiadne aktuálne info.
Varnish sme používali na starej IT. Stále je ho však možné využívať, len s menším trikom. Stačí, ak si DNS A záznamy nasmerujete na 195.210.29.47 a o zvyšok sa už varnish postará.