Niespójne czasy ładowania strony

11

Jestem bardzo blisko ukończenia dużego projektu Magento i skupiłem się na poprawie szybkości Magento. Jako rodzaj przedmowy jestem raczej front-endowym deweloperem, który wykonuje ten duży projekt we własnym zakresie i zastanawia się, jak to zrobić.

Mam magento programistyczne na dedykowanym serwerze wirtualnym Media Temple z 2 GB pamięci RAM. Ostatnio miałem aż 600 produktów i około 25 różnych atrybutów na każdy produkt (łącznie około 300 unikalnych atrybutów) i może 50 kategorii. Usunąłem to wszystko, próbując rozwiązać problemy z szybkością ładowania około 15 sekund.

Jednak moje czasy ładowania są wciąż długie i niespójne. Przeładowuję moją stronę główną z Firebug zgłaszającym odpowiedź 500 ms i natychmiast ponownie ładuję ponownie, a raportuje ponad 9 sekund. Czy to problem z serwerem czy coś z samym Magento? Jak przejść do testowania czegoś takiego?

andyjv
źródło

Odpowiedzi:

11

Najpierw musisz zdecydować, co testujesz, czy to tylko czas renderowania PHP - czy czas ładowania strony w świecie rzeczywistym.

W obu przypadkach użycie firebuga nie będzie niezawodne, ponieważ samo połączenie internetowe może być wąskim gardłem lub przyczyną zakłóceń.

Czas renderowania PHP

Jeśli chcesz tylko sprawdzić, czy czas renderowania PHP poprawił się / zmienił - najdokładniejszym sposobem jest użycie danych wyjściowych z profilera Magento.

W index.php, brak komentarza

Varien_Profiler::enable();

Następnie w

Administrator> System> Konfiguracja> Deweloper

Upewnij się, że profiler jest włączony.

Otrzymasz tabelaryczny wynik na dole każdej strony (front-end i back-end) z podziałem czasu wczytywania strony, mierzonej od momentu Mage::run()rozpoczęcia. Pierwszy wiersz wskaże całkowity czas renderowania PHP (w Mag).

To będzie twoja najdokładniejsza liczba, jeśli chodzi o ustalenie, czy twoje zmiany PHP mają wpływ na czas ładowania strony, nie wspominając, że zidentyfikuje wszelkie wąskie gardła wydajności.

Czas renderowania serwera WWW PHP

Następnym typem testu jest uwzględnienie narzutów samego serwera WWW (ale nie łączności ostatniej mili). Aby ten test był dokładny i nie miał na niego wpływu sam „internet” - należy go uruchomić na samym serwerze internetowym.

Używamy własnego narzędzia mage-perftest(więcej informacji można znaleźć tutaj ) - które może przetestować czysty czas renderowania PHP, rzeczywisty czas ładowania strony, a nawet testy współbieżności.

Aby przetestować tylko czas renderowania serwera WWW PHP, należy użyć (odpowiednio zastąp adres URL)

./mage-perftest -u me-s1.sonassihosting.com -b

Ten test da podział czasu wczytywania strony (tylko dla elementu PHP strony, ignorując wszelkie JS / CSS / Obrazy). Dane wyjściowe wyglądają mniej więcej tak:

Test Summary
============
Total files:              1
Total downloaded:         4K
Avg. page weight:         4.00K

Total time:               0.035s
Min response:             0.035s
Max response:             0.035s
Avg. page response:       0.03s

Concurrency/Repeats:      1
Transactions/s            28.57
Test URL:                 me-s1.sonassihosting.com
Success rate:             1/1 (100.00%)

Serwer czasu rzeczywistego w sieci Web

Ostatnim typem testu jest czas potrzebny na pobranie całej strony (PHP + zawartość statyczna). Ponownie możesz użyć mage-perftestdo tego celu, np.

./mage-perftest -u me-s1.sonassihosting.com

Unikaj jakichkolwiek usług testowania online, takich jak zaraza

Istnieje kilka internetowych narzędzi do testowania prędkości, takich jak GTMetrix, Pingdom itp. Nie zapewnią one żadnego dokładnego wyniku szczegółowego profilowania.

Mają swoje miejsce pod względem testowania łączności z zewnętrznymi sieciami, ale są całkowicie bezużyteczne jako metoda sprawdzania rzeczywistej wydajności PHP. W tym celu trzymaj się testów na serwerze / lokalnych.

Inne notatki

Napisaliśmy artykuł na temat zdalnego testowania i dlaczego należy go unikać, http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento- występ/

Uruchamianie Magento na VPS to zły pomysł. Inni mogą się nie zgadzać - ale z wielu powodów nie jest to odpowiednie środowisko dla sklepu Magento - i odpowiedzieliśmy na wiele pytań w tym stylu, oto kilka

Ben Lessani - Sonassi
źródło
Perftest jest niesamowity - czy jest na Github, abym mógł go rozwidlić?
philwinkle
Miałem problemy z uruchomieniem perftest, ale profiler warunkiem kilka ciekawych informacji: mage::dispatch::routers_matchi mage::dispatch::controller::action::predispatchwydają się być gardłem, choć nie jestem pewien, co jest rozwiązaniem tam ... wyszukiwanie nie wymyślić wiele.
andyjv
Im więcej stron otworzę jednocześnie, tym więcej czasu spędza magento mage::dispatch::routers_match, odpowiadając za 22 sekundy przy ładowaniu strony 28s. Przy tym samym obciążeniu jest również mage::dispatch::controller::action::predispatcho 22, CORE::create_object_of::Mage_Core_Model_Session21 i Mage_Core_Model_Session_Abstract_Varien::start/start21. Jestem pewien, że dzieje się coś nadrzędnego / dziecięcego, ale biorąc pod uwagę fakt, routers_matchże jest najdłuższy,
zakładam
Dane wyjściowe profilera obejmują hierarchicznie. To znaczy. Pokazuje całkowitą sumę dla wszystkiego, co działa w ramach tej funkcji. Zajmie Mageto najdłużej, ponieważ obejmuje wszystko, Routers_Matchjest w zasadzie następną wywoływaną funkcją, od której wszystko inne jest odradzane. To nie jest wąskie gardło, ale coś, co woła (spójrz dalej w dół tabeli). Nie otwieraj więcej niż 1 okna, jeśli profilujesz - to nic nie da.
Ben Lessani - Sonassi
Poniżej Routers_Matchznajduje się: DISPATCH EVENT:controller_action_predispatcho 21.0710, a OBSERVER: logo 21.0565
andyjv
3

Najprawdopodobniej jest to problem z serwerem, a nie problem Magento. W zależności od rodzaju używanego serwera czas ładowania może być krótszy niż sekunda. Możesz nawet uruchomić bardziej zaawansowane testy tutaj: http://www.magespeedtest.com/ . Możesz także sprawdzić prędkość od innych dostawców serwerów tam.

Poleciłbym również skorzystać z raportu o wodospadzie z http://www.webpagetest.org/ i sprawdzić, skąd dokładnie może pochodzić twoja „powolność”. Rozbije go na części (na przykład ile czasu zajmuje pobranie każdego pliku css, js i obrazu), co może pomóc w zwiększeniu prędkości.

To powiedziawszy, nawet jeśli w pełni zoptymalizujesz kod Magento, css, js, obrazy i zawartość, serwer zawsze będzie największym problemem. Polecam skorzystanie z Magento Hosting Provider, ponieważ ich serwery są lepiej dostrojone, aby pomóc Magento. Osobiście korzystam z Nexcess, ale inne, o których słyszałem, to Sonassi Hosting i Peer1.

Jest kilka artykułów o tym, jak poprawić prędkość, polecam lekturę białych stron na stronie Magento.

Chociaż jest bardziej ukierunkowany na Enterprise, nadal możesz skorzystać z wielu porad. Upewnij się także, że Magento jest na bieżąco! Nie powinieneś upaść więcej niż dwie wersje z bieżącej wersji.

kab8609
źródło
1
Miło cię tu mieć kab8609! :-)
Fabian Blechschmidt