Počasen Magento 2
 
brazara 4. jul 2017 05:54:47 Pridružen od:
7. apr 2014
206 objav
95 19 2
#1

Smo ravno sredi migracije iz Magento 1.9 na Magento 2.1.7, ki je potekala BP in vse deluje kot mora, opažamo le, da je stran za 200% počasnejša od Magento 1.9



Povprečno potrebuje cca 6 sekund, da naloži stran



V administraciji sem opazil možnost uporabe Varnish-a, na strežniku je že nameščen Redis.



Ima kdo že kakšne izkušnje z optimizacijo hitrosti na M2?



Hvala za nasvet


všeč(0) ni všeč(0) spam(0)
The only place SUCCESS comes before WORK is in the dictionary.
 
sonysony 4. jul 2017 09:01:01 Pridružen od:
2. nov 2009
283 objav
347 105 11
#2

za začetek ali imaš PHP 7 in dovolj memory limita?


všeč(0) ni všeč(0) spam(0)
 
Daz 4. jul 2017 09:42:04 Pridružen od:
24. avg 2011
148 objav
147 5 1
#3

Pred časom smo aktivno delali na Magentu 2, kjer je bilo kar nekaj izzivov pri optimizaciji hitrosti :) Ne vem sicer koliko artiklov imate, kakšen workflow je zadaj, konfiguracija sistema ip... a vseeno spodaj nekaj izkušenj, ki bi vam morda lahko prišle prav:



1. Vklop Flat categories in Flat products

Ta opcija v bazi združi vse potrebne atribute v eno vrstico, kar občutno zmanjša poizvedbe za določen produkt.

Stores --> Catalog --> Storefront --> Use Flat catalog product/category



2. Združitev CSS in JS datotek

S tem se bo zmanjšalo število requestov za oba tipa datotek. CSS merge načeloma deluje brez težav, pri JS pa testirajte vse opcije in če vse funkcionalnosti na front-end delujejo normalno po tem, ko se vklopijo (bundle, merge, minify). Obstajale so težave z uporabo require.js.

Stores --> Configuration --> Advanced --> Developer -> CSS/Javascript settings



3. Vklop keširanja

Priporočljivo je vklopiti vse vrste keširanja, ki so na voljo v administraciji. Ob tem je priporočljivo čim manj refrešanja posameznega keša v kolikor ni nujno potrebno.

System - Cache management



4. Optimizacija teme

Če imate kupljeno temo oz. temo, ki ni v osnovnem paketu Magenta preverite ali je njena struktura pravilna, da ni podvajanj v templating strukturi (posebej xml layout) in kakšnih drugih anomalij, ki bi upočasnile stran (dodatne skripte v temi, ki bi lahko uporabljale Magento 2 framework ali UI, pa jih trenutno ne ali niso optimalno spisane ip...).



5. Optimizacija slik

V kolikor imate veliko vnosov produktov dnevno in s tem slik je dobro, da so optimizirane preden se naložijo v administracijo, ker optimizacija slik s strani platforme dodatno obremeni resorse strežnika. Izognite se uporabi PNG ali GIF formata v kolikor gre za produktno sliko.



6. Cache control in gzip

Na strani strežnika je dobro nastaviti cache control + gzip za vse tipe datotek, ki se servirajo na front-endu.



7. Administracija

Če se v času povečanega obiska na strani istočasno zelo intezivno uporablja administracija (vnos artiklov, konfiguracija ip...), se stran lahko zelo upočasni. V kolikor imate veliko dnevnih vnosov artiklov (ročno ali avtomatizirano) in večji dnevni obisk (10k+) je dobro, da se uporaba administracije omeji med časom povečanega obiska.



8. Deploy workflow

V kolikor delate modifikacije teme ali modulov priporočam, da delate deploy in nadgradnje izven časa, ko je obisk strani povečan. Najboljši čas je ponavadi v večernih urah :)



9. 3rd party moduli

Če imate inštalirane 3rd party module preverite, če pravilno delujejo in ne upočasnjujejo strani. Pri veliko modulih je CSS klican posamezno in ni narejen v skladu z Magento templatingom (less), kar doda dodatne requeste. Enako velja za js, če se ne uporablja require v kolikor je potrebno.



10. Nadgradnje sistema

Ta je seveda očitna - če je zadnja verzija stabilna, je vedno dobro nadgraditi - performance, security & feature wise :)



11. Uporaba Varnisha ali Redisa

Če imate možnost uporabite Varnish ali Redis, kar lahko občutno pohitri serviranje statičnih strani. Oba je ponavadi najbolje uporabiti na ločenem strežniku, ki bo namenjen samo za serviranje končne vsebine. Več v M2 dokumentaciji

Stores --> System --> Full Page cache



12. VPS ali dedicated server

Magento 2 na shared hostingu ni uporaben, zato je priporočljiv zmogljiv VPS ali dedicated, ki bo zmogel procesiranje/load. Optimalna konfiguracija (ram, proces., storage) je seveda odvisna od strani, velikosti baze, št. obiskovalcev ip...



13. CDN

Če je možno, je priporočljivo vzpostaviti CDN za serviranje statičnih datotek (js, css, ikone ip...). Tudi tukaj se lahko uporabi Varnish/Redis, bodisi na primary ali dodatnem strežniku.



14. PHP7

Magento 2 na php7 deluje bolje in hitreje. Poleg tega (kot je sonysony omenil) preveri php memory limit in mysql cache limit.



15. Dodatno

Pri heavy traffic trgovinah se lahko loči administracija, postavi load balancerje ip... A to je že bistveno večji podvig :)






Hitri test



Če želite na hitro testirati, kje je ozko grlo glede hitrosti lahko naredite naslednje:




  • kopirajte trgovino na testno poddomeno

  • izklopite vse 3rd party module (v kolikor obstajajo) in nastavite privzeto (blank) temo

  • vklopite vse keše

  • vključite flat

  • na serverju omogčite gzip in cache control

  • uporabite php7 (če je možno)

  • v kolikor lahko, omogočite varnish



nato pa merite rezultate tako da primerjate live stran s testno med tem ko:




  • vklopite vašo temo

  • vklopite vsak 3rd party modul posebej

  • vklopite ostale funkcionalnosti (flat, js/css merge in minify, gzip, cache...)



Tako boste dobili povratne podatke glede potrebnih korakov za optimizacijo.






Upam, da bo zgoraj napisano kaj pomagalo.

Priporočam, da vse našteto delate izključno na testni strani in temeljito testirate preden gre v živo, ker pri M2 gre lahko hitro kaj narobe :)


všeč(21) ni všeč(0) spam(0)
 
brazara 4. jul 2017 09:54:59 Pridružen od:
7. apr 2014
206 objav
95 19 2
#4

Vse našteto smo že izvedli, stran še vedno počasna. V bistvu sama stran se naloži v cca 2 sekundah, težava so slike izdelkov, ki v povprečju potrebujejo dodatnih 5 sekund.



Kolikor sem razbral iz različnih člankov na netu je to dokaj splošna M2 težava, ki je prisotna tudi če vklopimo osnovno M2 LUMA temo.


všeč(0) ni všeč(0) spam(0)
The only place SUCCESS comes before WORK is in the dictionary.
 
Daz 4. jul 2017 10:18:00 Pridružen od:
24. avg 2011
148 objav
147 5 1
#5

Predvidevam na strani artikla? Težava je v tem, da se slike naložijo naknadno preko Ajax klica šele po tem, ko se renderira stran in ostali elementi (add to cart, cene, konfig. opcije...), zato pride do zamude pri prikazu slik. Pri tem menjava teme na Lumo ne bo pomagala, ker gre za core sistem in način renderiranja strani kar je kot si omenil splošna težava.



Je bilo kar nekaj pritožb na to temo, začasna možna rešitev pa je na voljo tukaj (nisem testiral).


všeč(1) ni všeč(0) spam(0)
 
dh5114 4. jul 2017 11:21:09 Pridružen od:
23. apr 2009
470 objav
1545 136 42
#6

Vcasih vem da so browserji delal s po dvema threadoma na domeno in je bil trik, da si dal staticen content na pod-domene, a-la: s1.domena.com, s2.domena.com itd. tja do 3 ali 4 kar je pomenilo, da se staticen content nalaga s 4-ih razlicnih domen, torej po 8 threadov je hkrati nalagalo v browser, namesto samo z dvema...



Nevem, mogoce je danes drugace...


všeč(2) ni všeč(0) spam(0)
 
Daz 4. jul 2017 12:07:17 Pridružen od:
24. avg 2011
148 objav
147 5 1
#7

@dh5114 mogoče bi se dalo kaj narediti s html5 web workerji (če ni cdn-ja)... sem pa že malo pozabil če bi to kaj vplivalo na vrsti red nalaganja preko require.js, ki ga Magento uporablja.


všeč(0) ni všeč(0) spam(0)
 
Coda 4. jul 2017 12:30:38 Pridružen od:
5. okt 2010
420 objav
688 244 45
#8

URL do strani?


všeč(0) ni všeč(1) spam(0)
Dej griz! x ᴥ x Arguing on the internet is like running at the special olympics. Even if you win, you're still retarded. ;)
Izdelava spletnih trgovin Degriz.net
 
brazara 13. jul 2017 11:33:16 Pridružen od:
7. apr 2014
206 objav
95 19 2
#9

Evo smo spet na začetku

Magento 2.1.7

VPS server 10× CPU, 50GB memory

PHP 7.0.2

Redis

Nameščeni vsi module potrebni po dokumentaciji Magenta



Ko omogočimo minify/merge CSS stran odpira cca 20 sekund, CPU skoči na 100%



Je morda že kdo naletel na podobne težave?



Brez omogočenega minify/merge CSS stran deluje odlično


všeč(0) ni všeč(0) spam(0)
The only place SUCCESS comes before WORK is in the dictionary.
 
OvcaX 13. jul 2017 11:34:40 Pridružen od:
24. avg 2007
2753 objav
4575 1194 281
#10

brazara kaj the f**** pa vi delate?

Mi imamo 10x manjšo konfiguracijo za ogromen magento z 250k SKUji.



če te zanima managed hosting lahko pogledava ali lahko pomagamo.


všeč(4) ni všeč(4) spam(0)
CEO@Humanfrog & CEO@Junai
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se