Magento Enterprise a Memcached

Nedávno som pracoval s jedným z našich klientov Magento Enterprise Cluster, ktorý chcel zlepšiť výkon svojej stránky. Tento klient používal našu sieť na doručovanie obsahu na odbremenenie poskytovania statických aktív a dodržiaval všetky naše odporúčané osvedčené postupy optimalizácie Magento. Používali tiež Memcached ako rýchly backend vo svojej konfigurácii Magento. Napriek tomu, že sme urobili všetko správne, pokiaľ ide o optimalizáciu, podarilo sa nám výrazne skrátiť čas potrebný na dosiahnutie prvého bajtu využitím viacerých inštancií memcached a úžasného využitia Zend Frameworku Magento na ukladanie do vyrovnávacej pamäte. Tu je návod.

Dvojúrovňové ukladanie do vyrovnávacej pamäte

Kedykoľvek nakonfigurujete backend ukladania do vyrovnávacej pamäte so zdieľanou pamäťou – napr. memcached, xcache alebo apc – Magento povolí dvojúrovňový typ vyrovnávacej pamäte Zend Framework. Základnou myšlienkou dvojúrovňovej vyrovnávacej pamäte je, že máte rýchlu vyrovnávaciu pamäť s obmedzenou veľkosťou na počiatočné vyhľadávanie a pomalšiu vyrovnávaciu pamäť s väčšou kapacitou pre prípady, keď rýchle vyhľadávanie vyrovnávacej pamäte zlyhá. Výhodou toho je, že získate rýchlosť backendu ukladania do vyrovnávacej pamäte založenej na pamäti plus kapacitu backendu založeného na disku alebo databáze. Teda keď dvojúrovňová vyrovnávacia pamäť funguje ako má. Fabrizio Branca má o tom vynikajúci článok problémy s ukladaním do vyrovnávacej pamäte Magento / Zend TwoLevelspolu s a náplasť ktoré možno použiť na opravu niektorých z nich. Túto opravu som teraz implementoval na niekoľkých stránkach a zaznamenal som výrazné zlepšenie v prístupoch do vyrovnávacej pamäte prvej úrovne.

Čítať:  Ako nainštalovať a používať Discord na Steam Deck

Memcached a relácie

Možnosti ukladania relácie na jednom dedikovanom serveri sú ‘File’, ‘Database’, ‘eAccelerator’ alebo ‘Memcache’. Predvolená hodnota je „Súbor“ a v tomto nastavení zvyčajne funguje dobre. Keď však prejdete na klastrovaný systém, vyvstane potreba použiť úložný priestor relácie, ktorý možno zdieľať medzi aplikačnými uzlami. Použitie ‘Databáza’ je takmer vždy zlý nápad, pretože v Magento je už dosť prevádzky DB bez toho, aby sa to spájalo s návštevnosťou relácie. „eAccelerator“ nemusí byť dostupný v každom prípade. Zostáva ‘Memcache’, ktorej nastavenie je triviálne, používa TCP a registruje obsluhu relácie, keď je nainštalované rozšírenie PECL.

Je dôležité použiť samostatnú inštanciu memcached na ukladanie relácií, aby ste nestratili všetky svoje relácie pri vyprázdnení vyrovnávacej pamäte Magento. Druhú inštanciu môžete nakonfigurovať tak, aby bežala na rovnakom serveri, ale na inom TCP porte (napr. 11212). Pokiaľ nemáte nezvyčajne dlhú životnosť relácie (zlý nápad), môžete nakonfigurovať veľkosť vyrovnávacej pamäte tak, aby bola oveľa menšia ako veľkosť vášho rýchleho backendu, aby ste ušetrili pamäť. Akonáhle je druhá inštancia spustená a spustená, konfigurácia Magenta na jej používanie sú len dva riadky v súbore local.xml:

[code language=”xml”]

[/code]

Memcached a pomalý backend

Pamätáte si, ako som povedal, že keď je povolené dvojúrovňové ukladanie do vyrovnávacej pamäte, druhá úroveň je určená pre pomalšie úložisko s väčšou kapacitou? Pamäť je lacná, priateľu, a nič vám nebráni nastaviť tretiu inštanciu memcached a použiť ju pre vyrovnávaciu pamäť druhej úrovne. Konfigurácia je triviálna:

Čítať:  Ako opraviť službu Magento 2, ktorá je dočasne zrušená...

[code language=”xml”]


10

[/code]

Tu môžete vidieť, že sme nastavili novú inštanciu memcached na počúvanie na porte 11213 a nastavili sme „slow_backend“ na vytvorenie inštancie triedy Zend_Cache_Backend_Memcached namiesto predvolenej triedy Zend_Cache_Backend_File. Jediná vec, ktorú si treba uvedomiť pri tejto konfigurácii, je, že keď som ju nastavil, všimol som si, že percento zásahov je oveľa nižšie ako v prípade prvej úrovne. Nebol som schopný určiť, či je to typické, alebo či to má niečo spoločné s nedostatočnou podporou značiek memcached.

Strih: David Alger z Elegantné štúdiá Llama potvrdil moje podozrenie o značkách. Ukázalo sa, že pre správne fungovanie pomalého backendu musí typ vyrovnávacej pamäte backendu podporovať značkovanie. Žiadny z backendov zdieľanej pamäte nepodporuje tagy, čo znamená, že po vybalení sú jedinými pomalými backendmi, ktoré fungujú, súbory a databáza.

K dispozícii sú dve rozšírenia, ktoré podporujú značky a ponúkajú lepší výkon v porovnaní so súborovým systémom. Jeden používa symbolické odkazy na zlepšenie času vyhľadávania. Druhý používa Redis.

Podrobnosti tu.

Memcached a vyrovnávacia pamäť celej stránky

Nakoniec, ak naozaj chcete, aby vaše webové stránky lietali, môžete využiť modul Full Page Cache, ktorý sa nachádza iba v Magento Enterprise Edition. Z mojej strany to vyžadovalo trochu vyšetrovania, pretože to nie je nikde zdokumentované, ale ukázalo sa, že modul Enterprise_PageCache vytvára inštanciu objektu Mage_Core_Model_Cache, ktorý sa má použiť na ukladanie celej stránky do vyrovnávacej pamäte. To nám dáva plný prístup k rozsahu backendov vyrovnávacej pamäte, ktoré sú k dispozícii pre modul základnej vyrovnávacej pamäte, vrátane memcached. Konfigurácia je podobná konfigurácii zo súboru local.xml, ale nachádza sa pod uzlom ‘full_page_cache’ v súbore enterprise.xml. Toto by bežalo na štvrtej inštancii memcached, ktorá počúva na porte 11214.

Čítať:  Päť optimalizácií front-end pre rýchlejší obchod Magento

Po implementácii všetkých štyroch inštancií memcached v Magente začala webová stránka klienta lietať. Keď som to testoval pomocou WebPageTest.orgstalo sa niečo pozoruhodné: priame A:

Tí z vás, ktorí pravidelne pracujú s Magento, môžu potvrdiť, aké je to zriedkavé. Dúfajme, že tento príspevok vám dal nejaké rady o tom, ako môžete využiť skvelé možnosti ukladania do vyrovnávacej pamäte poskytované v Magento a Zend Framework na zlepšenie výkonu vášho webu. A ak si vezmete len jednu vec, nech je to toto: Kľúčom k výkonu na webe je dobrý dizajn a vkladanie vyrovnávacej pamäte všade, kde sa dá.

Nové Publikácie:

ODPORÚČANIE