9 soovitust kuidas Magento kiiremaks teha

last_logo_i_make_for_you

Täna kirjutan Magento e-kaubanduse platvormi kiirusest ja tutvustan Zone soovitusi selle parandamiseks.

Keskendun eelkõige PHP lehtede kiiruse parandamisele. Lehtedel viidatud komponentide allalaadimise või brauseris renderdamise kiiruse jätan valdavalt käesoleva postituse skoobist välja.
Oma seisukohtade kinnitamiseks teostasin ka mõõtmisi, milleks kasutasin reaalsete ja suhteliselt populaarsete e-poodide koopiaid, mis valmistati mulle ette Multoni Magento ekspertide meeskonna poolt (minu tänud teile, lugupeetavad).
Testideks kasutatud Magento versioon oli 1.9.1.0.

Soovitus nr 1 – kasuta alati võimalikult uut PHP versiooni

PHP 5.5 ja 5.6 versionide vahel ei ole tohutult suurt kiiruse vahet, see on kuni 5% uuema versiooni kasuks, aga on vähe ratsionaalseid põhjuseid kasutada vanemat PHP versiooni ja leppida kehvema numbriga.

Varsti ootab PHP kasutajaid ees aga võimalus kasutada versiooni 7, mis toob endaga kaasa märkimisväärselt suurema kiirusevõidu. Konkreetselt Magento puhul räägitakse lehe laadimiskiiruse paranemisest kuni 70% võrra.

(NB! Magento 1.9 seeria vajab PHP 7-ga töötamiseks väikest koodimuudatust.)

Soovitus nr 2 – kasuta alati PHP OPcache laiendust

Vaikimisi on PHP koodi näol tegu inimloetava tekstiga, mis käivitamisel tuleb muuta serveri poolt mõistetavaks baitkoodiks. OPcache säilitab hiljuti käivitatud PHP skriptide baitkoodi serveri mälus, mis võimaldab igakordse “tõlkimise” arvelt märkimisväärselt aega kokku hoida.

Zone testides tagas PHP OPcache laienduse sisse lülitamine Magento kasutajale ligikaudu 100% kiirusevõitu.

magento-opcache

Soovitus nr 3 – kasuta alati Magento sisemise vahemälu võimalusi

Ilma sisemist vahemälu kasutamata on Magento nagu murtud jalaga sprinter.

Sellist olukorda, kus Magento süsteemsetes sätetes on vahemälu halduse all kõik välja lülitatud, ei saa produktsioonikeskkonnas kindlasti endale lubada.

Kiiruste vahe sisse ja välja lülitatud vahemäludega Magentol on kuni 5-kordne.

magento-cache

Soovitus nr 4 – Kasuta kindlasti mõnd Magento ‘Full Page Cache’ (FPC) moodulit

Magento 1.9.*.* kogukonnaversioonides FPC tugi vaikimisi puudub. See tuleb endale eraldi hankida. Palju FPC mooduleid on saadaval Magento Connect rakendustepoes, mõned neist on tasulised ja mõned tasuta, kuid ka tasuliste versioonide hinnad on tulemusi arvestades äärmiselt mõistlikud.

Meie testides andis parima tulemuse Multoni poolt katsetamiseks antud Amasty FPC (https://amasty.com/magento-full-page-cache.html). Samas saavutasime märkimisväärselt häid tulemusi ka tasuta Lesti FPC mooduliga (https://gordonlesti.com/projects/lestifpc/).

Kiirusevõit lehekülje laadimisel Amnasty FPC-d kasutades oli ühel konkreetsel poel 12-kordne.

magento-fpc

Soovitus nr 5 – Kui sul on suur pood, ära kasuta Magento sisemist statistikat

Kui tahad oma andmebaasiserverist ja I/O süsteemist viimast võtta, siis lülita välja Magento sisemine statistika kogumine ja looda selle asemel Google Analyticsi või mõne muu välise teenuse peale.

Magento sisemise statistika kasutamisel teeb iga lehevaatamine MySQL-i kirjutamisoperatsiooni, mis suure külastatavuse puhul tähendab märkimisväärset koormust andmebaasile ja I/O süsteemile.

Soovitus nr 6 – Kui sul on suur pood, võta poe majutamiseks kasutusele privaatserver

Privaatserveri kasutamisel on mitmeid eeliseid, millest üks olulisemaid on asjaolu, et sa ei jaga (majutushinna alla surumise huvides) oma serverit teiste klientidega. Teine oluline eelis on see, et võimalused tehniliseks eksperimenteerimiseks ja “tuunimiseks” on oluliselt suuremad.

Teenusepakkujad panustavad väga palju sellesse, et minimeerida oma jagatud serverites nö “halva naabri” efekti, kuid paratamatult esineb ettenägematuid olukord, kus mõni klient suudab selleks loodud kaitsemehhanismidest läbi pressida.

Soovitus nr 7 – Kui sul on väga suur pood, võta poe staatiliste elementide vahemäluna kasutusele Varnish

Varnishit on küll võimalik kasutada ka FPC mooduli asemel, kasutades selle Magentost juhtimiseks mõnd muud laiendust nagu Turpentine (https://github.com/nexcess/magento-turpentine), kuid integreeritud FPC moodulid on PHP lehtede jaoks efektiivsemad.

Soovitus nr 8 – Ära arva, et kõiki probleeme on võimalik riistvaraga surnuks lüüa

Tegime eksperimendi, kus panime ühe veebipoe kõrvuti tööle kahel erineva jõudlusega serveril.

Esimese parameetrid:

  • 1x Xeon E5-2630 v2 (6 core/12 threads)
  • 4x 8 GiB RAM
  • 4x SAS HDD

Teise parameetrid:

  • 2x Xeon E5-2630 v3 (8 core/16 threads)
  • 8x 8 GiB RAM
  • 12x SSD

Full Page Cache moodulita oli jõudluse vahe mõlemal konfiguratsioonil ainult 50% teise serveri kasuks – sekundis teenindatavate päringute arv tõusis 22 pealt 32 peale. Teine server on aga üle 2x esimesest kallim.

Seega, võrreldes 2x kallima riistvara poolt antavat võitu ja ca 150€-200€ maksva Full Page Cache mooduli antavat võitu on selge, kuhu esimesena investeering tuleks teha.

Soovitus nr 9 – Lülita sisse CSS failide ja JavaScript failide kombineerimine

See võimaldab Magentol kombineerida vastavad failid kokku kaheks suureks failiks, nii hoiad kokku kümneid või äärmisel juhul sadu päringuid veebiserverile igal lehe laadimisel.

Testimiseks kasutatud platvorm – Zone Nutikas Privaatserver

Nutikas Privaatserver on teenus, mis hõlmab endas järgmiseid komponente:

  • taristu (majutus, elekter, jahutus, internetiühendus);
  • privaatne riistvara;
  • tarkvaraplatvorm;
  • haldusteenus tark- ja riistvaraplatvormile;
  • 24/7 monitooring ja riketele reageerimine;
  • igaöised offsite varukoopiad.

Valisime testimiseks Privaatserveri, et vältida jagatud ressurssidel põhineva majutusteenustega kaasnevat klientide vastastikkust mõju ja omada võimalust ka veidike “laamendada”.

KKK

K: Aga Apache vs Nginx vs lighttpd ja kogu see veebiserverite valiku üle käiv vaidlus, mis sellega on?
V: Selliste mastaapide juures, kus korralikult konfigureeritud HTTP serveri puhul ühe või teise implementatsiooni erinevused esile tulevad, oled sa juba võtnud kasutusele Varnishi ja siis on sul ükskõik, mis selle taga on.

K: Aga sessioonide haldamine failisüsteemis, Memcache vs Redis?
V: Väikeste mastaapide juures pole vahe suur. Tõeliselt suured poed peaksid failisüsteemilt ära kolima, valides Memcache või Redise vahel. Meie soovitaks tänapäeval pigem Redist.

K: Miks testimisel saadud numbrid ühest konfiguratsioonist teise järjepidevad ei ole?
V: Numbrid pärinevad erinevatest veebipoodidest, kasutatud on parimaid saadud tulemusi.

K: Milliseid teenuseid Zone soovitab Magento veebipoele?
V: Meie rusikareegel on järgmine: “Arenda Virtuaalserveri paketil II, laivi mine Virtuaalserveri paketiga III. Kui läheb väga hästi, hangi Privaatserver I, kui läheb super hästi, hangi Privaatserver II. Kui osutud ükssarvikuks, ehitame klastri.”

Lisan veel siia, et arendajatel ja poeomanikel ei maksa häbeneda ajutiseks benchmarkimiseks või debugimiseks privaatserverit küsida. Meil on alati müügilaos või teisel ringil vaba riistvara, mida saab ka kuuajaseks testimisperioodiks rentida.

Autor: Ardi Jürgens

Infotehnoloogia entusiast. Zone Media OÜ juhatuse liige.