Korzyści płynące z pełnej pamięci podręcznej stron w Magento Enterprise są dość dobrze znane. To, co może nie być tak dobrze znane, to fakt, że aby w pełni skorzystać z tego, musi być w pełni zaludniony i gorący, szczególnie w przypadku dużych zestawów produktów, w których nie ma tylko kilku stron, wykorzystując ruch organiczny do zalać to wystarczająco szybko.
Magento zawiera wbudowaną funkcję cronjob do indeksowania witryny i rozgrzewania FPC wcześnie rano.
Widziałem i słyszałem o problemach powodowanych przez zbyt wczesne wykonywanie zadań rano, blokujących uruchamianie innych zadań, i chciałbym wiedzieć, co inni używają lub sugerują, aby to zrobić. Mam kilka pomysłów:
- Skompiluj skrypt powłoki, aby zindeksować każdą stronę w wygenerowanym pliku mapy witryny.
- Użyj osobnego wpisu crontab i krótkiego skryptu PHP, aby uruchomić Magento i bezpośrednio uruchomić proces przeszukiwacza.
Wszelkie przemyślenia i / lub doświadczenia na ten temat są mile widziane!
źródło
Odpowiedzi:
Możesz użyć oblężenia w połączeniu z
sitemap.xml
plikiem, tak jak robi to MageSpeedTest .Następnie uruchomić
Treści pochodzą stąd .
źródło
–delay
Po prostu nie - wcale. Zawsze. Będziemy to powtarzać w kółko, ale
Twoja strona musi być szybka bez dodatku FPC (lub Lakier do tego faktu). Zawsze będzie czas, kiedy treść nie zostanie przygotowana (powyższy scenariusz).
W rozładowanym sklepie czasy ładowania strony z FPC nie powinny być znacznie bardziej imponujące niż z FPC; Magento z powodzeniem potrafi
< 400ms
ładować strony w standardowych pamięciach podręcznych (na stronach kategorii / produktu / wyszukiwania). FPC sprowadzi to do< 80ms
- ale zawiera pewne zastrzeżenia.Nowe elementy / bardziej odpowiednie wyszukiwanie jest nieaktualne do momentu unieważnienia lub wygaśnięcia TTL
itp.
Dlaczego poleganie na FPC (lub lakierach) jest złym pomysłem
Jeśli chcesz stale zapewniać ręczne buforowanie pamięci podręcznej, prawdopodobnie istnieje kilka powodów
Nie możesz buforować wszystkiego
Jeśli wybierzesz sklep z zaledwie 5 kategoriami, zagnieżdżony na 2 poziomach głębokości, 5 atrybutów do filtrowania, 5 opcji atrybutów i 1000 produktów; to jest wiele możliwych kombinacji.
25 opcji do wyboru, wybranie jednego do 5 razy z rzędu - nie jestem statystykem , ale wiem, że to ... (zakładając, że liczba opcji atrybutów nie zmniejszy się całkowicie)
Ok, powyższy scenariusz nie jest prawdopodobny, jak sądzę, w ciągu 3 kliknięć - liczba dostępnych produktów zmniejszyłaby się wystarczająco, aby klient mógł znaleźć swój produkt. Więc nawet gdyby to było ...
Potem razy to przez 5 kategorii, czyli 625 adresów URL. Na tym etapie mówimy o małym katalogu i całkowicie ignorujemy wszystkie adresy URL produktów.
Nie bierzemy również pod uwagę faktu, że jeśli masz zagnieżdżone kategorie z
is_anchor
, to wykładniczo wzrośnie.Aby więc zaindeksować tę liczbę stron - albo masz nadzieję, że czas ładowania strony będzie dobry i krótki na początek, dzięki czemu będzie to szybki i lekki proces (w ten sposób pokonując cel przeszukiwania) - lub że masz wystarczająco dużo czasu, aby ukończyć przed wygaśnięciem TTL.
Jeśli Twoje strony miały czas ładowania strony 0,4 s, a miałeś 8-rdzeniowy procesor - wtedy ...
0,5 minuty, nieźle - ale wyobraźmy sobie, że miałeś czas ładowania strony 2 s
Ale jeśli wziąłeś maksymalny możliwy scenariusz
To twój serwer produkcyjny, przy 100% obciążeniu procesora przez 15 minut. Zmniejszysz prędkość pełzania proporcjonalnie do żądanego TTL.
Jeśli więc chcesz, aby treść miała 3600 sekund TTL, indeksowanie może być 4 razy wolniejsze - tj. tylko 25% procesora dedykowanego do indeksowania. To dużo zasobów, aby utrzymać kategorię treści - nie uwzględniliśmy nawet produktów, wyszukiwanych haseł ani dodatkowych wyświetleń sklepu na tym etapie
W rzeczywistości samo spojrzenie na rozmiar kombinacji w
catalog_url_rewrites
tabeli (który nie uwzględnia nawet parametrów z nawigacji warstwowej) da wyobrażenie o tym, ile adresów URL można by przeszukać.Każdy sklep z pewnością będzie inny, ale staram się zaatakować do domu, że indeksowanie witryny do najlepszych FPC nie jest praktyczne. Tylko upewnij się, że Twój sklep jest szybki .
Gdzie przydatny jest FPC
Korzyści płynące z gry FPC znajdują się w mocno obciążonym sklepie - gdzie masz naprawdę wysoki poziom ruchu, a skrytki są naturalnie i stale zalewane przez sam upadek.
Następnie wchodzi FPC, zmniejszając koszty infrastruktury związane z często żądanymi treściami - ograniczając liczbę powtarzających się połączeń z zapleczem Magento.
Odkryliśmy, że FPC jest świetny do wdrożenia, gdy masz bardzo duży ruch - nie w celu skrócenia czasu ładowania strony - ale w celu zmniejszenia zużycia zasobów.
Kogo to obchodzi, nadal chcę się czołgać
Masz dwie opcje
I jest wiele narzędzi do zrobienia obu z nich, niektóre z nich znam
Korzystanie z Mag-Perftest
Możesz łatwo zindeksować swój sklep za pomocą Mage-Perftest, najpierw go pobierz
Następnie zdefiniuj proces indeksowania za pomocą mapy witryny Magento (możesz to dostosować, tworząc mapę witryny z dowolnych adresów URL, pod warunkiem, że adresy URL są zawinięte w
<loc></loc>
tagi). Następujące polecenie odczyta wszystkie adresy URL z pliku mapy witryny, a następnie zaindeksuje (tylko PHP) adresy URL w ciągu 1440 minut (1 dzień). Jeśli serwer przekroczy 20% CPU lub średnie obciążenie 2, przeszukiwanie zostanie chwilowo wstrzymane.Jeśli masz 1000 adresów URL, zaindeksowanych w ciągu 1 dnia, będzie to ok. 1 żądanie co 86 sekund (y) ~ docelowa wartość 0,011 RPS
źródło
W tych dniach zachowam całą swoją ofertę na blogu, ale w międzyczasie mam szczyt w moim małym cieplejszym buforze
wfpc
.Testowanie wydajności
Możesz przetestować wydajność swojej strony Magento
./wfpc -t http://mymagentosite.com/sitemap.xml
Ocieplenie FPC
Możesz ogrzać FPC, który trafi na każdy adres URL w sitemap.xml.
./wfpc -w http://mymagentosite.com/sitemap.xml
Jeśli chcesz, możesz także opóźnić między żądaniami, oto 1 sekundowe opóźnienie między żądaniami.
./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml
Tryb testowy trafia tylko 10 adresów URL losowo, więc po rozgrzaniu FPC możesz uruchomić tryb testowy, aby dowiedzieć się, jaką różnicę robi FPC!
Myśli
Osobiście uważam, że cieplej ma sens ... Na małej stronie z około 40 stronami czas pobierania skraca się o około połowę przez FPC. Na dużej stronie z prawie 40 000 produktów używających Lesti_FPC z APCu jako backendem, używam nieco ponad 200 MB pamięci podręcznej, co szczerze mówiąc, nie jest niczym na serwerze produkcyjnym o pojemności 8 GB.
źródło