Wymagane modyfikacje do używania lakieru w Magento CE

14

Z trudem znajduję dobre przykłady tego, jakie modyfikacje są wymagane, aby Varnish mógł buforować witrynę Magento.

Idealnie chciałbym listę zadań, takich jak rzeczy do wyłączenia / włączenia i gdzie ich szukać. Byłoby również dobrze mieć konfigurację Varnish, z którą te zmiany są przeznaczone do pracy.

Przewodnik po wydajności Magento dużo mówi o Varnish, więc wiem, że już to zrobiono, ale tak naprawdę nie wyjaśnia, jak to zrobić.

SimonJGreen
źródło

Odpowiedzi:

2

Mają oficjalny moduł prawo tutaj . Zawiera wszystko, czego potrzebujesz (konfiguracja lakieru, moduł, ...)

Kenny
źródło
19

Czy lakier jest dla Ciebie odpowiedni?

Lakier nie jest najważniejszym osiągnięciem Magento. Wspaniale kompensuje obciążenie botami i klientami witryn sklepowych - ale nie powinno to być pierwszym powodem, dla którego Twój sklep będzie szybszy.

W rzeczywistości wdrożenie Varnish powinno być ostatnią modyfikacją wydajności twojego sklepu. Umieść go tylko wtedy, gdy zobaczysz czasy ładowania strony Magento jest w stanie dostarczyć bez niego (np. Czasy ładowania strony <600 ms).

Twój sklep wciąż musi być szybki

Ponieważ Varnish nadal wymaga co najmniej jednego załadowania strony, aby przygotować pamięć podręczną, oznacza to, że wydajność w pamięci podręcznej nadal musi być bardzo dobra. Zdecydowana większość unikalnych adresów URL (warstwowe trafienia nawigacji, wyszukiwane hasła itp.) Nigdy tak naprawdę nie będą wyświetlane z Varnish, chyba że:

a) Twoje TTL są tak wysokie, że zapytanie z 4 dni temu jest nadal aktualne
b) Liczba odwiedzin na stronie jest tak duża, że ​​adresy URL są zapełniane w bardzo krótkim czasie

Trzeba również wziąć pod uwagę, że nie każdy sklep nadaje się do lakieru . Każda witryna, która zachęca użytkowników do utworzenia osobistej sesji (np. Logowanie, dodawanie do koszyka itp.) Na wczesnym etapie podróży klienta, oznacza, że ​​Varnish będzie ostatecznie zbędny.

Na przykład prywatne witryny z zakupami zachęcają do logowania użytkownika z poziomu zestawu, jednak w ten sposób oznacza, że ​​Varnish nigdy tak naprawdę nie ma nietypowej zawartości, która może być buforowana. Twoje wskaźniki trafień będą drastycznie niskie i nie będzie żadnych korzyści z używania lakieru.

Świeża treść lub wyższy współczynnik trafień

Wskaźnik trafień lakieru
Zdjęcie dzięki uprzejmości magestack.com

Efektywne używanie Varnish polega na znalezieniu równowagi między nieaktualnymi treściami a liczbą odwiedzających witrynę.

Jeśli masz zajętą ​​stronę - istnieje prawdopodobieństwo, że uda Ci się uniknąć niższych TTL i nadal będziesz mieć wysoki współczynnik trafień Lakierem - a także nadal będziesz mieć niskie TTL - w ten sposób świeższą treść. Tak więc zmiany zapasów / cen są szybko odzwierciedlane, a pamięć podręczna jest stale uzupełniana na podstawie wielkości odwiedzin.

Jeśli masz witrynę o niskim natężeniu ruchu, musisz pójść na kompromis. Zwiększ swoje TTL, aby zapewnić wyższy współczynnik trafień - lub miej aktualną zawartość. Nie możesz mieć obu. Tak, możesz stale uruchamiać narzędzie do indeksowania / pająka - ale zasoby, które zużyłoby to, oraz sama objętość lub adresy URL, które można indeksować (zwykle w dziesiątkach tysięcy w przypadku małych sklepów) oznacza, że ​​po prostu nie działa . Zwykle mniejsze sklepy skorzystałyby bardziej na dobrym rozszerzeniu FPC i wysoce zoptymalizowanej konfiguracji serwera.

Ale oczywiście mogę używać Varnish nawet po zalogowaniu się użytkowników, co z pamięcią podręczną na użytkownika lub ESI?

ESI

Pliki ESI to doskonałe narzędzie do przechowywania zawartości w pamięci podręcznej, a także do dynamicznych bloków na stronie. Ale aby być skutecznie wykorzystywanym, musisz zminimalizować liczbę wywołań zwrotnych do absolutnego minimum. Jest mały moduł head-start , którego możesz użyć jako podstawy tego procesu - po prostu upewnij się, że dokręciłeś w nim dziury bezpieczeństwa, ponieważ domyślnie jest bardzo niepewny - nie ma ograniczeń co do tego, jakie uchwyty układu możesz załadować / nie załadować

Za każdym razem, gdy ładuje się Magento, spada wydajność około 200 ms - zanim jeszcze załaduje kolekcję / renderuje blok itp. Więc jeśli masz więcej niż 3x ESI, istnieje prawdopodobieństwo, że skończyłeś wolniejsze ładowanie strony przy użyciu Varnish + ESI dla dynamicznej zawartości, niż tylko pomijanie Varnish i przekazywanie żądania bezpośrednio do samego Magento.

Aby naprawdę efektywnie korzystać z ESI, musisz być w stanie połączyć wiele żądań w jednym żądaniu.

Na przykład strona widoku kategorii zawierająca 20 produktów musi pokazywać dokładne poziomy zapasów. Więc używasz ESI dla każdego bloku na stronie. To byłoby 20-krotność zapotrzebowania na akcje ESI. Podczas gdy zapytania o zapasy są bardzo lekkie, jednoczesne uruchomienie 20x z nich zmiażdżyłoby wydajność. Zamiast tego możesz obsłużyć cały blok / kolekcję 20 produktów i po prostu otrzymać tę 1x prośbę. Ale i tak ładowanie i renderowanie kolekcji jest prawdopodobnie najwolniejszym elementem na stronie - więc niewiele zyskałeś.

Efektywne korzystanie z ESI wymaga odpowiedniego planowania i wykonania, w przeciwnym razie będziesz mieć wolniejszą stronę niż w ogóle nieużywanie Lakieru.

Pamięć podręczna na użytkownika

Następnie istnieje alternatywa użycia pamięci podręcznej specyficznej dla użytkownika. To zły pomysł, chyba że masz witrynę o bardzo niskim natężeniu ruchu. Twój współczynnik trafień będzie strasznie niski - szanse na odwiedzającego odwiedzającego tę samą stronę, na której już byli, są bardzo niskie. A dla każdego klienta ta strona o pojemności 6 KB będzie zajmować coraz więcej miejsca w pojemniku do przechowywania lakieru.

Na przykład, jeśli przydzielono 1 GB na lakier. W typowej witrynie, w której użytkownicy przeglądają 8 stron podczas wizyty, średnio 6 z nich będzie niepowtarzalnych. To 28 gości na 1 MB pamięci. Następnie weź pod uwagę swoje obrazy, CSS i JS - te (na szczęście) będą powszechne, ale prawdopodobnie nadal zajmą dobre 7-800 MB dostępnej pamięci. To pozostawia 200 MB wolnego miejsca, wystarczającą pamięć podręczną dla 5600 unikalnych użytkowników.

Nie obchodzi mnie to, chcę tylko Lakier

OK, musisz wykonać następujące czynności:

  1. Zainstaluj terminator SSL, aby usiąść przed Varnish (np. Stud / pound / nginx)
  2. Zainstaluj lakier na serwerze
  3. Upewnij się, że X-Forwarded-Forpoprawnie skonfigurowałeś
  4. Zainstaluj moduł lakieru w swoim sklepie
  5. Skonfiguruj VCL Varnish, aby wykluczyć rozszerzenia innych firm

Ponieważ pierwsze 3 punkty wykraczają poza zakres tej odpowiedzi, pozostawię to sobie. Punkt 4 to dziecinna zabawa, a punkt 5 - kontynuuj czytanie.

Najważniejsze w implementacji Varnish jest zapewnienie, że nigdy nie buforujesz treści, które nigdy nie powinny być buforowane.

Na przykład.

  • Oddzwanianie do bramek płatności
  • Przegląd koszyka
  • Przegląd mojego konta klienta
  • Kasa (i odpowiednie połączenia Ajax)

itp.

W przypadku podstawowych adresów URL Magento istnieje dość standardowa lista identyfikatorów URI, które można uciec w programie Varnish:

admin|checkout|customer|catalog/product_compare|wishlist|paypal

Ale musisz również wziąć pod uwagę wszelkie niestandardowe / zewnętrzne rozszerzenia, które również używasz, które mają niestandardowe trasy, routery i przestrzenie nazw. Niestety nie ma łatwego sposobu, aby dowiedzieć się, które adresy URL z tych rozszerzeń mogą, a których nie mogą być buforowane. Musisz więc oceniać każdy z osobna.

Z reguły za każdym razem, gdy konfigurujemy Varnish, zaczniemy od zidentyfikowania odpowiednich tras, routerów i przestrzeni nazw, które mogą oni zająć i stąd przejść. Robimy to za pośrednictwem SSH:

grep -Eiroh "<frontName>.*</frontName>" community | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" community | grep "<from>"
grep -A5 -ir "<routers>" community 
grep -Eiroh "<frontName>.*</frontName>" local | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" local | grep "<from>"
grep -A5 -ir "<routers>" local 

To nie da ci ostatecznej listy adresów URL - ale prawie na pewno da ci początek.

Nie możemy podkreślić, jak ważne jest, aby nigdy nie buforować treści, które nie powinny być buforowane. Rezultaty mogą być katastrofalne.

W podsumowaniu

Podobnie jak w przypadku każdej innej optymalizacji wydajności serwera Magento, poprawnie zaimplementowana i dostrojona może naprawdę przynieść korzyści. Ale samo wprowadzenie oprogramowania bez jego właściwej konfiguracji nie tylko sprawi, że Twój sklep nie będzie szybszy, ale potencjalnie wolniejszy, bardziej niepewny i mniej niezawodny.

Ben Lessani - Sonassi
źródło
@SimonJGreen. Jeśli odpowiedź była zadowalająca, zaznacz ją jako zaakceptowaną. Beta potrzebuje bardziej akceptowanych odpowiedzi, aby ukończyć studia.
Ben Lessani - Sonassi
Dziękuję za odpowiedź. Ale co z krokiem „Konfiguruj apache i lakier”? Po prostu „zainstaluj lakier” to za mało.
Yaroslav Rogoza
Chodzi mi o to, że nie powinieneś brać pod uwagę Lakieru jako rozwiązania. Lakier ma sprawić, że szybkie strony zużywają mniej zasobów , a nie wolne strony szybko . Większość ludzi używa go z niewłaściwych powodów. Nie wspominając już o tym, że właściwa konfiguracja nie pasuje do 1 rozmiaru. Musisz wziąć pod uwagę, jak pasuje do większego obrazu infrastruktury, jak współdziała z twoim terminatorem SSL, jak radzisz sobie z równoważeniem obciążenia, jakie są twoje definicje i wyłączenia TTL. To po prostu NIE JEST KONIECZNE w przypadku witryn o małym natężeniu ruchu, nie mają wystarczającej liczby kroków, aby utrzymać swoją pozycję.
Ben Lessani - Sonassi
Dla każdego na komputerze Mac używającym komend wyszukiwania Ben, zauważ, że wersja sed OSX wymaga różnych flag. Jeśli zainstalujesz gnu-sed, działa on tak, jak pokazano tutaj.
benz001