Tempi di caricamento della pagina incoerenti


11

Sono molto vicino al completamento di un grande progetto magento e ho concentrato la mia attenzione sul miglioramento della velocità del magento. Come una sorta di prefazione, sono più uno sviluppatore front-end che fa questo grande progetto internamente e capisce le cose mentre vado.

Ho magento di sviluppo su un server virtuale dedicato Media Temple con 2 GB di RAM. Di recente ho avuto fino a 600 prodotti e circa 25 attributi diversi su ciascun prodotto (per un totale di circa 300 attributi unici) e forse 50 categorie. Ho eliminato tutto ciò nel tentativo di risolvere i problemi di velocità di caricamento intorno ai 15 secondi.

Tuttavia i miei tempi di caricamento sono ancora lunghi e incoerenti. Ricarico la mia home page con Firebug che riporta 500 ms per una risposta, e ricarico immediatamente di nuovo e riporta oltre 9 secondi. Si tratta di un problema del server o qualcosa con Magento stesso? Come posso fare per provare qualcosa del genere?

Risposte:


11

Devi prima decidere cosa stai testando, sia che si tratti solo del tempo di rendering di PHP o del tempo di caricamento della pagina del mondo reale.

In entrambi gli scenari, l'utilizzo di firebug non sarà affidabile, poiché la tua stessa connessione Internet potrebbe essere il collo di bottiglia o il motivo del jitter.

PHP Render Time

Se stai semplicemente cercando di vedere se il tempo di rendering di PHP è migliorato / modificato, il modo più accurato è utilizzare l'output del profiler Magento.

In index.php, commento

Varien_Profiler::enable();

Quindi dentro

Ammin.> Sistema> Configurazione> Sviluppatore

Assicurarsi che il profiler sia abilitato.

Si finirà con un output tabulare nella parte inferiore di ogni pagina (front-end e back-end) che suddivide il tempo di caricamento della pagina, misurato dal punto di Mage::run()partenza. La prima riga indicherà il tempo totale di rendering di PHP (all'interno di Mage).

Questa sarà la tua cifra più accurata in termini di stabilire se le modifiche di PHP stanno facendo la differenza nel tempo di caricamento della pagina, per non parlare del fatto che identificherà eventuali colli di bottiglia nelle prestazioni.

Tempo di rendering del server Web PHP

Il prossimo tipo di test consiste nel tenere conto dei costi generali del server Web stesso (ma non della connettività dell'ultimo miglio). Pertanto, affinché questo test sia accurato e non influenzato dalla stessa "Internet", è necessario eseguirlo sul server Web stesso.

Usiamo la nostra utility mage-perftest(ulteriori informazioni sono disponibili qui ), che possono testare il tempo di rendering PHP puro, il tempo di caricamento della pagina del mondo reale e persino i test di concorrenza.

Per testare solo il tempo di rendering del web server PHP, dovrai usare (sostituire l'URL di conseguenza)

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

Questo test fornirà una suddivisione del tempo di caricamento della pagina (solo per l'elemento PHP della pagina, ignorando qualsiasi JS / CSS / Immagini). L'output è simile a questo,

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

Tempo di rendering del server Web Real World

Il tipo finale di test è il tempo impiegato per scaricare l'intera pagina (PHP + contenuto statico). Ancora una volta, è possibile utilizzare mage-perftestper fare questo, ad es.

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

Evita qualsiasi servizio di test online come la peste

Ci sono alcuni strumenti di test di velocità online come GTMetrix, Pingdom ecc. Questi non ti daranno alcun tipo di risultato accurato per la profilazione granulare.

Hanno il loro posto in termini di test della connettività di rete esterna, ma sono completamente inutili come mezzo per controllare le prestazioni effettive di PHP. Attenersi al test sul server / locale per questo.

Altre note

Abbiamo scritto un articolo sui test remoti e perché dovresti evitarlo, http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento- prestazione/

Eseguire Magento in un VPS è una cattiva idea. Altri potrebbero non essere d'accordo - ma non è un ambiente adatto per un negozio Magento per una serie di motivi - e abbiamo risposto a MOLTE domande in questa direzione, eccone alcune


Perftest è fantastico - è su Github, quindi posso rovinarlo?
Filwinkle

Ho avuto problemi a eseguire il perftest, ma il profiler ha fornito alcune informazioni interessanti: mage::dispatch::routers_matche mage::dispatch::controller::action::predispatchsembra essere un collo di bottiglia, anche se non sono sicuro di quale sia la soluzione ... la ricerca non fornisce molto.
andyjv,

Più pagine apro contemporaneamente, più tempo spende magento mage::dispatch::routers_match, pari a 22 secondi con un caricamento di 28 pagine. Sullo stesso carico, c'è anche mage::dispatch::controller::action::predispatcha 22, CORE::create_object_of::Mage_Core_Model_Sessiona 21 e Mage_Core_Model_Session_Abstract_Varien::start/starta 21 secondi. Sono sicuro che ci sia qualcosa di genitore / figlio in corso, ma con l' routers_matchessere il più lungo,
suppongo

L'output del profiler è gerarchicamente inclusivo. Vale a dire. Sta mostrando un totale inclusivo per tutto ciò che viene eseguito all'interno di quella funzione. Quindi Mageimpiegherà più tempo poiché include tutto, Routers_Matchè sostanzialmente la prossima funzione che chiama, da cui tutto il resto viene generato. Non è il collo di bottiglia, ma è qualcosa che sta chiamando (guarda più in basso nel tavolo). Non aprire più di 1 finestra se stai profilando - questo non otterrà nulla.
Ben Lessani - Sonassi,

Di seguito Routers_Matchè riportato: DISPATCH EVENT:controller_action_predispatchalle 21.0710 e OBSERVER: logalle 21.0565
andyjv

3

Questo è molto probabilmente un problema del server e non un problema di Magento. A seconda del tipo di server utilizzato, è possibile ottenere un tempo di caricamento inferiore a un secondo. Puoi persino eseguire test più sofisticati qui: http://www.magespeedtest.com/ . Puoi anche rivedere la velocità da altri fornitori di server anche lì.

Consiglierei anche di usare il rapporto a cascata di http://www.webpagetest.org/ e vedere da dove provenga esattamente la tua "lentezza". Lo spezzerà in parti (come il tempo necessario per scaricare ogni css, js e file di immagine) che può aiutarti a migliorare la velocità.

Detto questo, anche se ottimizzi al massimo il codice Magento, CSS, JS, immagini e contenuti, il server sarà sempre il problema più grande. Consiglierei di utilizzare un provider di hosting Magento, in quanto i loro server sono ottimizzati per aiutare Magento. Personalmente, uso Nexcess, ma altri di cui ho sentito parlare bene sono Sonassi Hosting e Peer1.

Ci sono alcuni articoli su come migliorare la velocità, consiglierei di leggere le pagine bianche sul sito di Magento.

Sebbene sia più orientato verso l'Enterprise, puoi comunque beneficiare di molti consigli. Inoltre, assicurati di mantenere aggiornato Magento! Non dovresti cadere più di due versioni dalla versione corrente.


1
Felice di averti qui kab8609! :-)
Fabian Blechschmidt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.