Inkonsistente Ladezeiten der Seite

11

Ich stehe kurz vor dem Abschluss eines großen Magento-Projekts und habe mich darauf konzentriert, die Geschwindigkeit von Magento zu verbessern. Als eine Art Vorwort bin ich eher ein Front-End-Entwickler, der dieses große Projekt intern durchführt und dabei Dinge herausfindet.

Ich habe Entwicklungsmagento auf einem Media Temple dedizierten virtuellen Server mit 2 GB RAM. Ich hatte kürzlich bis zu 600 Produkte und ungefähr 25 verschiedene Attribute für jedes Produkt (insgesamt ungefähr 300 einzigartige Attribute) und vielleicht 50 Kategorien. Ich habe all das gelöscht, um die Ladegeschwindigkeiten um 15s zu beheben.

Meine Ladezeiten sind jedoch immer noch lang und inkonsistent. Ich lade meine Homepage neu, wobei Firebug 500 ms für eine Antwort meldet, und lade sie sofort erneut, und es wird über 9 Sekunden gemeldet. Ist das ein Serverproblem oder etwas mit Magento selbst? Wie teste ich so etwas?

andyjv
quelle

Antworten:

11

Sie müssen zuerst entscheiden, was Sie testen, ob es sich nur um die PHP-Renderzeit handelt - oder um die Ladezeit der realen Seite.

In beiden Szenarien ist die Verwendung von Firebug nicht zuverlässig, da Ihre Internetverbindung selbst der Engpass oder Grund für Jitter sein kann.

PHP-Renderzeit

Wenn Sie nur sehen möchten, ob sich die PHP-Renderzeit verbessert / geändert hat, ist es am genauesten, die Ausgabe des Magento-Profilers zu verwenden.

In index.php, Kommentar

Varien_Profiler::enable();

Dann in

Admin> System> Konfiguration> Entwickler

Stellen Sie sicher, dass der Profiler aktiviert ist.

Am Ende jeder Seite (Front-End und Back-End) wird eine tabellarische Ausgabe angezeigt, die die Ladezeit der Seite, gemessen vom Startpunkt, Mage::run()aufschlüsselt. Die allererste Zeile zeigt die gesamte PHP-Renderzeit (innerhalb von Mage) an.

Dies wird Ihre genaueste Zahl sein, um festzustellen, ob Ihre PHP-Änderungen die Ladezeit der Seite beeinflussen, ganz zu schweigen davon, dass Leistungsengpässe festgestellt werden.

Renderzeit des PHP-Webservers

Die nächste Art von Test besteht darin, den Overhead des Webservers selbst zu berücksichtigen (jedoch nicht die Konnektivität auf der letzten Meile). Damit dieser Test genau ist und nicht vom Internet selbst beeinflusst wird, sollten Sie ihn auf dem Webserver selbst ausführen.

Wir verwenden unser eigenes Dienstprogramm mage-perftest(weitere Informationen finden Sie hier ), mit dem Sie die reine PHP-Renderzeit, die Ladezeit von Seiten in der realen Welt und sogar Parallelitätstests testen können.

Um nur die Renderzeit des PHP-Webservers zu testen, verwenden Sie (ersetzen Sie die URL entsprechend).

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

Dieser Test gibt eine Aufschlüsselung der Ladezeit der Seite (nur für das PHP-Element der Seite, wobei JS / CSS / Images ignoriert werden). Die Ausgabe sieht ungefähr so ​​aus:

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%)

Renderzeit des realen Webservers

Die letzte Art des Tests ist die Zeit, die zum Herunterladen der gesamten Seite benötigt wird (PHP + statischer Inhalt). Auch hier können Sie dies mage-perftesttun, z.

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

Vermeiden Sie Online-Testdienste wie die Pest

Es gibt einige Online-Geschwindigkeitstest-Tools wie GTMetrix, Pingdom usw. Diese liefern Ihnen keine genauen Ergebnisse für die granulare Profilerstellung.

Sie haben ihren Platz beim Testen der externen Netzwerkkonnektivität, sind jedoch völlig nutzlos, um die tatsächliche PHP-Leistung zu überprüfen. Halten Sie sich dazu an die Tests auf dem Server / vor Ort.

Weitere Hinweise

Wir haben einen Artikel über Remote-Tests geschrieben und warum Sie dies vermeiden sollten: http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento- Performance/

Magento in einem VPS auszuführen ist eine schlechte Idee. Andere mögen anderer Meinung sein - aber es ist aus mehreren Gründen keine geeignete Umgebung für ein Magento-Geschäft - und wir haben viele Fragen in diesem Sinne beantwortet, hier einige

Ben Lessani - Sonassi
quelle
Perftest ist großartig - ist es auf Github, damit ich es gabeln kann?
Philwinkle
Ich hatte Probleme beim Ausführen von Perftest, aber der Profiler lieferte einige interessante Informationen: mage::dispatch::routers_matchund mage::dispatch::controller::action::predispatchscheint ein Engpass zu sein, obwohl ich nicht sicher bin, welche Lösung es gibt ... die Suche bringt nicht viel.
Andyjv
Je mehr Seiten ich gleichzeitig öffne, desto mehr Zeit verbringt Magento mit mage::dispatch::routers_match22 Sekunden beim Laden von 28 Sekunden . Auf der gleichen Last gibt es auch mage::dispatch::controller::action::predispatchbei 22s, CORE::create_object_of::Mage_Core_Model_Sessionbei 21s und Mage_Core_Model_Session_Abstract_Varien::start/startbei 21s. Ich bin mir sicher, dass etwas mit Eltern / Kindern los ist, aber da routers_matches das längste ist, gehe ich davon aus, dass dies das Elternteil der anderen 20-Sekunden-Funktionen ist
andyjv
Die Profilerausgabe ist hierarchisch inklusive. Dh. Es zeigt eine inklusive Summe für alles, was innerhalb dieser Funktion ausgeführt wird. Also Magewird es am längsten dauern, da es alles enthält, Routers_Matchist im Grunde die nächste Funktion, die es aufruft, aus der alles andere hervorgeht. Es ist nicht der Engpass, aber etwas, das es nennt (siehe weiter unten in der Tabelle). Öffnen Sie nicht mehr als ein Fenster, wenn Sie ein Profil erstellen - das bringt nichts.
Ben Lessani - Sonassi
Unten Routers_Matchist es: DISPATCH EVENT:controller_action_predispatchum 21.0710 und OBSERVER: logum 21.0565
andyjv
3

Dies ist höchstwahrscheinlich ein Serverproblem und kein Magento-Problem. Je nachdem, welche Art von Server Sie verwenden, können Sie eine Ladezeit von weniger als einer Sekunde erhalten. Sie können hier sogar anspruchsvollere Tests durchführen: http://www.magespeedtest.com/ . Sie können dort auch die Geschwindigkeit anderer Serveranbieter überprüfen.

Ich würde auch empfehlen, den Wasserfallbericht von http://www.webpagetest.org/ zu verwenden und zu sehen, woher genau Ihre "Langsamkeit" kommen kann. Es wird in Teile zerlegt (z. B. wie lange das Herunterladen der einzelnen CSS-, JS- und Image-Dateien dauert), um die Geschwindigkeit zu verbessern.

Selbst wenn Sie den Magento-Code, CSS, JS, Bilder und Inhalte in vollem Umfang optimieren, ist der Server immer das größte Problem. Ich würde empfehlen, einen Magento-Hosting-Anbieter zu verwenden, da deren Server besser auf Magento abgestimmt sind. Persönlich benutze ich Nexcess, aber andere, von denen ich gute Dinge gehört habe, sind Sonassi Hosting und Peer1.

Es gibt einige Artikel zur Verbesserung der Geschwindigkeit. Ich würde empfehlen, die weißen Seiten auf der Magento-Website zu lesen.

Obwohl es eher auf Unternehmen ausgerichtet ist, können Sie dennoch von vielen Ratschlägen profitieren. Stellen Sie außerdem sicher, dass Sie Magento auf dem neuesten Stand halten! Sie sollten nicht mehr als zwei Versionen aus der aktuellen Version fallen lassen.

kab8609
quelle
1
Schön, dass Sie hier sind kab8609! :-)
Fabian Blechschmidt