Czy Magento jest zwykle tak strasznie wolne?
To jest moje pierwsze doświadczenie z nim, a panel administracyjny po prostu zajmuje wieki, aby załadować i zapisać zmiany. Jest to domyślna instalacja z danymi testowymi.
Serwer, na którym jest hostowany, bardzo szybko obsługuje witryny inne niż Magento. Co takiego jest w kodzie PHP używanym przez Magento, że działa tak wolno i co można zrobić, aby to naprawić?
php
magento
optimization
pan euro
źródło
źródło
Odpowiedzi:
Byłem tylko stycznie zaangażowany w optymalizację Magento pod kątem wydajności, ale oto kilka powodów, dla których system jest tak wolny
Niektóre części Magento wykorzystują system bazy danych EAV zaimplementowany na MySQL. Oznacza to, że zapytanie o jedną „rzecz” często oznacza zapytanie o wiele wierszy
Za kulisami jest wiele rzeczy (konfiguracja aplikacji, konfiguracja systemu, konfiguracja układu itp.), Które obejmują tworzenie gigantycznych drzew XML w pamięci, a następnie „odpytywanie” tych samych drzew o informacje. Zajmuje to zarówno pamięć (przechowywanie drzew), jak i procesor (analizowanie drzew). Niektóre z nich (zwłaszcza drzewo układu) są ogromne. Ponadto, o ile nie jest włączone buforowanie, drzewo to jest tworzone z plików na dysku i przy każdym żądaniu .
Magento używa swojego systemu konfiguracji, aby umożliwić Ci przesłonięcie klas. Jest to potężna funkcja, ale oznacza, że za każdym razem, gdy tworzony jest model, pomocnik lub kontroler, należy uruchomić dodatkowe instrukcje PHP, aby określić, czy potrzebny jest oryginalny plik klas, czy też pliki klas zastępujących. To się sumuje.
Oprócz systemu układu, system szablonów Magento obejmuje dużo renderowania rekurencyjnego. To się sumuje.
Ogólnie rzecz biorąc, zadaniem inżynierów Magento było przede wszystkim zbudowanie możliwie najbardziej elastycznego, dostosowywalnego systemu, a później martwienie się o wydajność.
Pierwszą rzeczą, jaką możesz zrobić, aby zapewnić lepszą wydajność, jest włączenie buforowania (System -> Zarządzanie pamięcią podręczną). Zwolni to część blokowania procesora / dysku, które ma miejsce, gdy Magento tworzy różne drzewa XML.
Drugą rzeczą, którą chcesz zrobić, jest zapewnienie, że Twój host i zespół operacyjny mają doświadczenie w dostrajaniu wydajności Magento. Jeśli polegasz na planie za 7 USD miesięcznie, aby cię przetrwać, cóż, powodzenia.
źródło
W nawiązaniu do zaleceń Alana Storma dotyczących buforowania, są dwie rzeczy, które szczególnie polecam, abyś zapoznał się z buforowaniem:
- Upewnij się, że buforowanie jest w memcached, a nie na dysku.
Zajmuję się kilkoma instalacjami magento, a kiedy już dostaniesz jakiekolwiek obciążenie systemu, memcached zaczyna działać znacznie szybciej. I jest bardzo łatwy do zmiany (w stosunku do robienia innych rzeczy przynajmniej z Magento!)
Dobry punkt wyjścia jest tutaj: http://www.magentocommerce.com/boards/viewthread/12998/P30/ - ale jeśli w ogóle nie korzystałeś z memcached, warto również zapoznać się z ogólnymi informacjami na jego temat.
- Włącz buforowanie szablonów / widoków.
To jest dobry artykuł: http://inchoo.net/ecommerce/magento/magento-block-caching/
Na stronie magento są też dobre (buforowanie bloków google magento), ale w tej chwili jest wyłączone.
Aby dodać moje dwa centy do buforowania bloków, radziłbym utworzyć własne bloki w / app / code / local, rozszerzając podstawowe i definiując parametry pamięci podręcznej, nazwij je xxx_Cache, a następnie zaktualizuj układ, aby zamiast tego używał tych bloków tych podstawowych. W ten sposób unikniesz utraty zmian lub zepsucia systemu podczas aktualizacji magento.
źródło
Jeśli jeszcze tego nie widzieliście, Magento i Rackspace połączyli siły, aby stworzyć białą księgę na temat dostrajania wydajności Magento. To jest świetne. https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/
--- edytować ---
Kolejnym świetnym źródłem, nowo dostępnym (październik 2011), jest: http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf
(Dzięki Alan Storm za ten jeden.)
źródło
Prawdopodobnie istnieje również bardzo nieoczywisty powód, dla którego interfejs administratora jest bardzo powolny. Magento ma moduł o nazwie Mage_AdminNotification. Spróbuj wyłączyć to rozszerzenie. Ponieważ to, co robi, to zapytanie magentocommerce.com o nowe wiadomości o aktualizacjach. Jeśli ich serwery działają wolno, strona administratora czeka i w efekcie działa wolno z powodu opóźnienia sieci i ładowania zewnętrznych wiadomości. Jeśli zabezpieczyłeś wychodzące połączenie z serwerem przez zaporę ogniową, może to być jeszcze bardziej frustrujące, ponieważ interfejs administratora będzie czekał na przekroczenie limitu czasu, gdy nie może dotrzeć do magentocommerce.com
Aby go wyłączyć: przejdź do System -> Konfiguracja, przewiń w dół i naciśnij Zaawansowane (w sekcji Zaawansowane). Teraz wyłącz
Mage_AdminNotification
i zapisz!źródło
Mage_AdminNotification
.Mam tylko powierzchowne doświadczenie z Magento. Zainstalowałem go na współdzielonym serwerze gridowym i ładowanie strony było fatalne ~ 5 + sekund. Na próżno zainstalowałem go na moim serwerze dedykowanym zoptymalizowanym pod kątem witryn CMS i było to bardzo, bardzo zgryźliwe.
Mój hosting dedykowany miał ~ 10 Joomla! witryny i działającą witrynę VBullitin.
Domyślam się, że po prostu nie będzie działać na współdzielonym hostingu. Nadmierna subskrypcja po prostu nie zapewni wystarczającej ilości zasobów, aby Magento działało tak, jak powinno.
źródło
Jestem bardziej zaangażowany w optymalizację serwerów zarządzanych w mojej firmie, ale mogę mieć dla Ciebie kilka wskazówek. Po pierwsze, możesz przyjrzeć się kodowi dokładniej, korzystając z funkcji śledzenia kodu serwera Zend. Pozwoli Ci zobaczyć, gdzie i kiedy rzeczy się brudzą.
Całkowicie podzielam opinię Benlumleya dotyczącą pamięci podręcznej. Większość witryn, które hostujemy, nie ma nawet włączonego buforowania bloków. Ta pamięć podręczna musi być jawnie wywoływana, a nie „zakładana”. Więc jeśli twój kod nie brał jeszcze udziału w tym mechanizmie, zdecydowanie chcesz spróbować. Jeśli masz wersję EE, możesz wyświetlić pełną stronę, aby uzyskać najlepsze z bestii.
Odwrotny serwer proxy również bardzo pomoże. Będzie buforować statyczne zasoby, znacznie zmniejszając nacisk na stos interpretacji php na serwerach frontowych.
Nie zapomnij zapisać sesji i pamięci podręcznej Magento na dysku RAM. To z pewnością przeniesie Cię na inny poziom występów.
Wciąż jest wiele do powiedzenia, ale kończy mi się czas. Musisz wiedzieć, że dobra witryna, dobrze zakodowana w wersji 1.4.1 CE, działająca na serwerze 2x5650 Xeon + 16 GB RAM i posiadająca Rproxy na wierzchu, może przyjmować do 50000 unikalnych odwiedzających dziennie z płynnymi stronami dla wszystkich .
źródło
Przejście z Apache na LiteSpeed bardzo nam pomogło. Oprócz: Edytowania ustawień MySQL, instalacji Fooman Speedster (moduł do kompresji / łączenia plików js i css) oraz instalacji APC. Magento opublikowało również białą księgę na temat tego, jak uzyskać najlepszą wydajność z edycji Enterprise, ale ma to również zastosowanie do innych wersji: http://www.magentocommerce.com/whitepaper/
źródło
Istnieje wiele powodów, dla których Twój koszyk na zakupy Magento może działać wolno, ale nie ma wymówek, ponieważ istnieje wiele sposobów, aby rozwiązać problem i sprawić, by był bardzo szybki. Włączenie Gzip poprzez modyfikację pliku htaccess to początek. Możesz także zainstalować rozszerzenie fooman speedster. Rodzaj używanego serwera będzie również określał szybkość Twojego sklepu. Więcej wskazówek i lepsze wyjaśnienie tutaj http://www.interactone.com/how-to-speed-up-magento/
źródło
Podczas pierwszej instalacji miałem strony, których ładowanie trwało 30 sekund. Mój serwer nie został wyczerpany w pamięci RAM lub procesorze, więc nie wiedziałem, co robić. Patrząc na panel sieciowy firebuga, ładował około 100 plików na stronę, a połączenie trwało długo. Po zainstalowaniu fooman speedster i gzip w htaccess czasy ładowania spadły do 3 sekund, tak jak to było na innych wózkach sklepowych na moim serwerze.
źródło
Magento działa bardzo wolno, ponieważ projekt bazy danych nie jest zbyt dobry. Kod jest bałaganem i bardzo trudny do aktualizacji i optymalizacji. Zatem wszystkie optymalizacje są wykonywane za pośrednictwem pamięci podręcznej zamiast kodu.
Z drugiej strony. Jest to sklep internetowy z wieloma narzędziami. Więc jeśli potrzebujesz elastycznego sklepu internetowego, po prostu kup bardzo wydajny serwer i wszystko będzie dobrze.
źródło
sprowadzi się również do funkcjonalności i wydajności.
Surową wydajność uzyskuje się za pomocą nginx, php-fpm, memcached, apc i odpowiednio zaprojektowanego serwera.
Funkcjonalnością, taką jak wydajność plesk i magento, można zarządzać, biorąc całą infrastrukturę z perspektywy podczas projektowania chmury wydajnościowej Magento.
źródło