Tiempos de carga de página inconsistentes

11

Estoy muy cerca de completar un gran proyecto de magento y he centrado mi atención en mejorar la velocidad de magento. Como una especie de prefacio, soy más un desarrollador front-end que hace este gran proyecto internamente y que resuelve las cosas a medida que avanzo.

Tengo el desarrollo de magento en un servidor virtual dedicado de Media Temple con 2 GB de RAM. Recientemente tuve hasta 600 productos y aproximadamente 25 atributos diferentes en cada producto (un total de aproximadamente 300 atributos únicos) y quizás 50 categorías. Eliminé todo eso en un intento de solucionar problemas de velocidad de carga alrededor de los 15 segundos.

Sin embargo, mis tiempos de carga aún son largos e inconsistentes. Recargo mi página de inicio con Firebug informando 500ms para una respuesta, e inmediatamente vuelvo a cargar e informa más de 9 segundos. ¿Es este un problema del servidor o algo con Magento? ¿Cómo hago para probar algo así?

andyjv
fuente

Respuestas:

11

Primero debe decidir qué está probando, ya sea solo el tiempo de representación de PHP o el tiempo de carga de la página del mundo real.

En cualquier caso, el uso de firebug no será confiable, ya que su conexión a Internet en sí misma podría ser el cuello de botella o el motivo de la inquietud.

PHP Render Time

Si solo está buscando ver si el tiempo de renderizado de PHP ha mejorado / cambiado, entonces la forma más precisa es usar la salida del perfilador de Magento.

En index.php, comentar

Varien_Profiler::enable();

Entonces en

Admin> Sistema> Configuración> Desarrollador

Asegúrese de que el generador de perfiles esté habilitado.

Terminará con una salida tabular en la parte inferior de cada página (front-end y back-end) desglosando el tiempo de carga de la página, medido desde el punto de Mage::run()inicio. La primera línea indicará el tiempo total de renderizado de PHP (dentro de Mage).

Esta será su cifra más precisa en términos de establecer si sus cambios en PHP están haciendo una diferencia en el tiempo de carga de la página, sin mencionar que identificará los cuellos de botella de rendimiento.

Tiempo de renderizado del servidor web PHP

El siguiente tipo de prueba es tener en cuenta los gastos generales del servidor web en sí (pero no la conectividad de última milla). Entonces, para que esta prueba sea precisa y no esté influenciada por el 'internet' en sí mismo, debe ejecutarla en el servidor web.

Utilizamos nuestra propia utilidad mage-perftest(se puede encontrar más información aquí ), que puede probar el tiempo puro de renderizado de PHP, el tiempo de carga de la página del mundo real e incluso las pruebas de concurrencia.

Para probar solo el tiempo de renderizado del servidor web PHP, usaría (reemplace la URL en consecuencia)

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

Esta prueba dará un desglose del tiempo de carga de la página (solo para el elemento PHP de la página, ignorando cualquier JS / CSS / Imágenes). La salida se parece a esto,

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

Tiempo de renderizado del servidor web del mundo real

El último tipo de prueba es el tiempo que lleva descargar la página completa (PHP + contenido estático). Nuevamente, puede usar mage-perftestpara hacer esto, por ejemplo.

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

Evite cualquier servicio de prueba en línea como la peste

Existen algunas herramientas de prueba de velocidad en línea como GTMetrix, Pingdom, etc. Estas no le darán ningún tipo de resultado preciso para el perfil granular.

Tienen su lugar en términos de prueba de conectividad de red externa, pero son completamente inútiles como un medio para verificar el rendimiento real de PHP. Apéguese a las pruebas locales / en el servidor para esto.

Otras notas

Escribimos un artículo sobre pruebas remotas y por qué debería evitarlo, http://www.sonassi.com/knowledge-base/magento-kb/why-siege-isnt-an-accurate-test-tool-for-magento- actuación/

Ejecutar Magento en un VPS es una mala idea. Otros pueden estar en desacuerdo, pero no es un entorno adecuado para una tienda Magento por varias razones, y hemos respondido MUCHAS preguntas en este sentido, aquí hay algunas

Ben Lessani - Sonassi
fuente
Perftest es increíble, ¿está en Github para poder bifurcarlo?
philwinkle
Tuve problemas para ejecutar perftest, pero el generador de perfiles proporcionó información interesante: mage::dispatch::routers_matchy mage::dispatch::controller::action::predispatchparece ser un cuello de botella, aunque no estoy seguro de cuál es la solución ... la búsqueda no ofrece mucha información.
Andy
Cuantas más páginas abro a la vez, más tiempo pasa magento mage::dispatch::routers_match, lo que representa 22s en una carga de páginas de 28s. En la misma carga, también hay mage::dispatch::controller::action::predispatcha los 22, CORE::create_object_of::Mage_Core_Model_Sessiona los 21 y Mage_Core_Model_Session_Abstract_Varien::start/starta los 21. Estoy seguro de que hay algo padre / hijo en marcha, pero con el routers_matchsiendo el más largo, estoy suponiendo que esa es la matriz de los otros 20 segundos funciones
andyjv
La salida del generador de perfiles es jerárquicamente inclusiva. Es decir. Muestra un total inclusivo para todo lo que se ejecuta dentro de esa función. Por Magelo tanto , tomará más tiempo ya que incluye todo, Routers_Matches básicamente la siguiente función que llama, de la que se genera todo lo demás. No es el cuello de botella, pero sí lo está llamando (mira más abajo en la tabla). No abra más de 1 ventana si está perfilando, eso no va a lograr nada.
Ben Lessani - Sonassi
A continuación Routers_Matchhay: DISPATCH EVENT:controller_action_predispatcha las 21.0710 y OBSERVER: loga las 21.0565
andyjv
3

Este es probablemente un problema del servidor y no un problema de Magento. Dependiendo del tipo de servidor que use, puede obtener un tiempo de carga de menos de un segundo. Incluso puede ejecutar pruebas más sofisticadas aquí: http://www.magespeedtest.com/ . También puede revisar la velocidad de otros proveedores de servidores allí también.

También recomendaría usar el informe en cascada de http://www.webpagetest.org/ y ver de dónde puede provenir exactamente su "lentitud". Lo dividirá en partes (como el tiempo que lleva descargar cada archivo css, js e imagen) que pueden ayudarlo a mejorar la velocidad.

Dicho esto, incluso si optimiza el código de Magento, css, js, imágenes y contenido al máximo, el servidor siempre será el mayor problema. Recomendaría usar un proveedor de alojamiento Magento, ya que tienen sus servidores más ajustados para ayudar a Magento. Personalmente, uso Nexcess, pero otros de los que he oído cosas buenas son Sonassi Hosting y Peer1.

Hay algunos artículos sobre cómo mejorar la velocidad, recomendaría leer las páginas blancas en el sitio web de Magento.

Si bien está más orientado a Enterprise, aún puede beneficiarse de muchos de los consejos. Además, ¡asegúrate de mantener actualizado a Magento! No debería caer más de dos versiones de la versión actual.

kab8609
fuente
1
Es bueno tenerte aquí kab8609! :-)
Fabian Blechschmidt