Naspeedujte svoj web


  • Zdieľať na Google+

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.

Komentáre

  • Feldsam
    Odpovedať
    Autor
    Feldsam

    perfekne. K tomu ftp: staci si predsa nechat A zaznam http://ftp.domena.sk. smerovany na povodnu IP.

    • tomas.corej
      Odpovedať
      Autor
      tomas.corej

      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.

  • stan
    Odpovedať
    Autor
    stan

    no bezim odskusat

  • Stefan Petovsky
    Odpovedať
    Autor
    Stefan Petovsky
    • tomas.corej
      Odpovedať
      Autor
      tomas.corej

      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.

      • evan70
        Odpovedať
        Autor
        evan70

        Skoda, s mod_pagespeed je vsetko o hodne jednoduchsie 🙁

  • Martin Mraz
    Odpovedať
    Autor
    Martin Mraz

    Preco Varnish, ked môžete ako reverse proxy použiť nginx? Alebo má Varnish nejake výhody?

  • tomas.corej
    Odpovedať
    Autor
    tomas.corej

    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.

  • my name
    Odpovedať
    Autor
    my name

    ako mate poriesenu bezpecnost dat ulozenych v memcache?

    • tomas.corej
      Odpovedať
      Autor
      tomas.corej

      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.

  • pepe
    Odpovedať
    Autor
    pepe

    Mozem poprosit o trochu podrobnejsi postup ako pouzit memcache vo svojom scripte….THX

  • Petr
    Odpovedať
    Autor
    Petr

    Dobrý den,
    chci se zeptat lze zapnout Varnish když budu mít na hostingu přikoupenou vlastní IP (kvůli SSL certifikátu)?

    • WebSupport
      Odpovedať
      Autor
      WebSupport WebSupport

      Technicky to mozne je. Ak mate taky pripad, napiste na admin@ websupport.sk

  • Ico
    Odpovedať
    Autor
    Ico

    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.

    • Ico
      Odpovedať
      Autor
      Ico

      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)

  • Tomas
    Odpovedať
    Autor
    Tomas

    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 😀 ?

  • Chalan
    Odpovedať
    Autor
    Chalan

    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é 😉

  • Gnaag
    Odpovedať
    Autor
    Gnaag

    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.

    • WebSupport
      Odpovedať
      Autor
      WebSupport WebSupport

      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á.