Opracowaliśmy projekt Magento z dużym zapasem zasobów i zawsze napotykamy problem z indeksowaniem. Próbowaliśmy wszystkiego, co można znaleźć w Internecie, aby rozwiązać codzienny problem z indeksowaniem, np. Obcinanie płaskich tabel i ponowne indeksowanie za pomocą interfejsu CLI, ustawiając cron dla indeksowanie, ale jest to nasz codzienny ból głowy związany z problemem indeksowania.
Szukamy Stałego rozwiązania tego problemu, pracując nad projektami istnieją różne scenariusze, takie jak codzienna aktualizacja produktów lub codzienny import produktów z innych źródeł.
Każdy, kto ma jakieś najlepsze praktyki z tym lub jakieś obejście, prosimy o podzielenie się nimi, które będą bardzo mile widziane.
Odpowiedzi:
Ważne jest, aby zrozumieć, które indeksy są powolne i dlaczego
Złożoność katalogu i docelowo architektura sklepu będą decydować o tym, jak długo zajmie ponowne indeksowanie - w połączeniu z podstawową infrastrukturą.
Jeśli masz 50 000 produktów i 10 wyświetleń sklepu, możesz zagwarantować, że kilka milionów wierszy
catalog_url_rewrite
zajmie trochę czasu.Jeśli masz 100 produktów, ale 5000 atrybutów można zagwarantować
catalog_attributes
lubcatalog_product_flat
stół odbędzie wiek odbudować lub spaść płasko na jego twarzyJeśli masz 1000 produktów, ale 500 atrybutów, które można przeszukiwać,
catalog_fulltext_search
ukończenie zajmie jeszcze wiekRozwiązanie każdego problemu, z którym się stykasz, nie jest uniwersalne, chodzi o prawidłowe zaprojektowanie sklepu; posiadanie odpowiedniej infrastruktury do jej obsługi i stosowanie ponownego indeksowania częstotliwości / strategii, która zarówno wspiera aktualność treści, jak i wydajność.
Istnieje również przypadek oceny, czy pewne indeksy są nawet wymagane. Korzystanie z płaskiego produktu / kategorii nie zawsze przyspiesza wszystkie sklepy; widzieliśmy, że spowalnia sklepy. Może się okazać, że po przetestowaniu wydajności przed / po - nie są nawet brane pod uwagę.
źródło
tl; dr
Nie ma srebrnego rozwiązania. Sugeruję kilka sposobów obejścia tego problemu,
Sonassi_Fastsearchindex
ale dotyczy to przeszukiwania katalogu.Być może wyłączenie aktualizacji indeksu przy zapisywaniu - planowanie uruchamiania przez noc - przyniesie pewną ulgę? W połączeniu z dodaniem większej ilości pamięci podręcznej - memcached, Redis, APC - i pamięci podręcznej pełnej strony, takiej jak Varnish (jeśli używasz CE), możesz zacząć. Jeśli planujesz używać Lakieru, spójrz
Nexcess_Turpentine
na github, aby uzyskać szybki start.Więcej informacji
Problemy z indeksowaniem - w szczególności catalog_url_rewrites - są dobrze znane i udokumentowane w społeczności. Magento poradził sobie z nimi w wersji Enterprise, ponieważ są to klienci, których najbardziej to dotyczy. Wielu klientów EE ma ponad 10 000 produktów i wiele wyświetleń sklepów, stron internetowych itp.
Jeśli jednak masz duży katalog i dużą liczbę atrybutów, możesz znaleźć się w sytuacji, w której indeksowanie zajmie dużo czasu - w szczególności katalog_url_rewrite, product_flat - w takim przypadku nie sugeruję naprawy czasu wykonywania indeksu długość, ale raczej odciąży część przetwarzania, aby pozwolić urządzeniu na indeksowanie cykli procesora zamiast na wyświetlanie zawartości .
Pytania, które należy sobie zadać:
Nie ma srebrnego rozwiązania dla tego konkretnego problemu - jako dostawca rozwiązań powinieneś pomóc klientowi w podjęciu decyzji, która najlepiej poprawi sprzedaż i biznes przy jednoczesnym utrzymaniu niskich kosztów ogólnych.
Alternatywy
Przeładuj wyszukiwanie w katalogu i warstwową nawigację do Solr.
Skaluj w poziomie. Dodaj więcej serwerów Apache / nginx. Więcej serwerów = większa równoczesna przepustowość. To nie jest 1: 1. Nexcess ma świetny oficjalny dokument dotyczący wydajności i konfiguracji Apache tutaj: http://www.nexcess.net/magento-best-practices-whitepaper
A jeśli zdecydujesz się na Lakier - pamiętaj:
źródło
W większości ciężkich sklepów internetowych Magento tak trudno było uruchomić narzędzie do zarządzania indeksem Magento. Często miałem ten problem. Ciągłe uruchamianie skryptu powłoki przez dewelopera jest często gorączkowe. Zwykle naprawiam ten problem na stałe w ten sposób.
Tworzę nową kopię shell / indexer.php> shell / myindexer.php
Dostosuj shell / myindexer.php wokół linii 154
Do
i dodaj to zaznaczenie wokół linii 166
przed
A następnie dodaję nowy skrypt powłoki do cpanel cron, aby uruchamiał się co 5 minut
Ponieważ powyższy skrypt powłoki jest uruchamiany co 5 minut i reindeksuje tylko procesy wymagające reindeksowania, zmniejsza ryzyko dużego obciążenia procesora serwera, a cały proces reindeksowania jest bardzo szybki. Jeśli żaden proces nie wymaga ponownego indeksowania, po prostu nie uruchomi tego procesu. Pamiętaj też, aby ustawić tryb reindeksowania na „Aktualizuj przy zapisie” na stronie zarządzania indeksem. Jeśli nie wiesz, możesz uzyskać tę opcję w obszarze Działania> Zmień tryb indeksu obok przycisku Prześlij.
źródło
Łatwiej byłoby powiedzieć, czy możesz podać więcej danych (wielkość inwentarza, odwiedzających, maszyny), ale oto możliwość:
Sonassi_Fastsearchindex
rozszerzenia do indeksu wyszukiwania katalogu. Chociaż indeksuje tylko tytuł, opis i SKU (myślę, że zauważyłem), działa świetnie i skraca czas indeksowania wyszukiwania katalogów.Działa na Magento CE 1.7.0.2; wciąż ból;)
źródło
używając Dnd_Patchindexurl byłem w stanie skrócić czas reindexu catalog_url_rewrite do prawie 70%
Myślę, że to dobre rozwiązanie, aby wykluczyć produkty wyłączone lub niewidoczne, aby ich adres URL został utworzony za darmo!
Po:
Zainstalowałem go w wersji 1.9.1.1 i działa bardzo dobrze!
Może być zainstalowany również przez Connect http://www.magentocommerce.com/magento-connect/catalog/product/view/id/15074/s/dn-d-patch-index-url-1364/category/12863/
źródło
Uaktualnij do EE 1.13. W tej wersji indeksatory zostały znacznie ulepszone.
źródło