php magento optimization

php - ¿Por qué Magento es tan lento?



optimization (12)

¿Magento suele ser tan terriblemente lento?

Esta es mi primera experiencia y el panel de administración simplemente tarda años en cargar y guardar los cambios. Es una instalación predeterminada con los datos de prueba.

El servidor donde está alojado sirve otros sitios que no son de Magento muy rápido. ¿De qué se trata el código PHP que utiliza Magento que lo hace tan lento y qué se puede hacer para solucionarlo?


Además de las recomendaciones de Alan Storm sobre el almacenamiento en caché, hay dos cosas que específicamente le recomiendo que investigue en relación con el almacenamiento en caché:

- Asegúrese de que el almacenamiento en caché esté en memcached, en lugar de en el disco.

Cuido un par de instalaciones de magento, y una vez que tienes algún tipo de carga en el sistema, Memcached comienza a funcionar mucho más rápido. Y es muy fácil cambiarlo (¡en relación con hacer otras cosas de magento al menos!)

Un buen punto de partida es aquí: http://www.magentocommerce.com/boards/viewthread/12998/P30/ - pero si no ha utilizado Memcached en absoluto antes, vale la pena mirar algo de información general al respecto también.

- Habilitar caché de plantilla / vista.

Este es un buen artículo: http://inchoo.net/ecommerce/magento/magento-block-caching/

También hay buenos en el sitio magento (google magento block caching), pero están caídos en este momento.

Para agregar mis dos centavos al almacenamiento en caché de bloques, te aconsejo que crees tus propios bloques en / app / code / local, ampliando los principales y definiendo los parámetros de caché, nómbralos xxx_Cache y luego actualiza tu diseño para usar estos bloques en su lugar de los principales. De esta forma, evitas perder tus cambios o romper el sistema cuando actualizas magento.


Cambiar de Apache a LiteSpeed ​​nos ayudó mucho. Además de: Editar la configuración de MySQL, instalar Foomen Speedster (módulo para comprimir / combinar archivos js y css) e instalar APC. Magento también ha publicado un libro blanco sobre cómo obtener el mejor rendimiento de la edición empresarial, pero es igualmente aplicable a las otras versiones: http://www.magentocommerce.com/whitepaper/


Cuando instalé por primera vez, tenía páginas que tardaban 30 segundos en cargarse. Mi servidor no estaba al máximo en ram o procesador, así que no sabía qué hacer. Al mirar el panel de red de firebug, cargaba unos 100 archivos por página, y cada uno tardó mucho tiempo en conectarse. Después de instalar fooman speedster y el gzip en el htaccess, las cargas se redujeron a 3 segundos, como si hubieran estado en otros carritos de compra en mi servidor.


Estoy más involucrado en la optimización del servidor administrado en mi empresa, pero es posible que tenga algunos consejos para usted. Primero, puede mirar el código más de cerca usando la función de rastreo de código del servidor Zend. Te permitirá ver dónde y cuándo las cosas se ensucian.

Comparto totalmente la consideración de Benlumley con respecto al caché. La mayoría de los sitios que alojamos ni siquiera tienen el bloqueo de caché habilitado. Este caché tiene que ser llamado explícitamente y no "asumido". Entonces, si el código aún no ha formado parte de este mecanismo, es algo que definitivamente debe intentar. Si tiene una versión EE, puede obtener la página completa para obtener lo mejor de la bestia.

Un proxy inverso también ayudará mucho. Va a almacenar en caché los recursos estáticos, reduciendo significativamente la presión en la pila de interpretación php de sus servidores frontales.

No olvides escribir las sesiones y la memoria caché de Magento en un disco RAM. Esto también te llevará definitivamente a otro nivel de actuaciones.

Todavía hay mucho que decir aquí, pero me estoy quedando sin tiempo. Debe saber que un buen sitio, bien codificado en una versión 1.4.1 CE, ejecutándose en un servidor 2x5650 Xeon + 16 GB RAM y teniendo un Rproxy en la parte superior puede recibir hasta 50 000 visitantes únicos por día con páginas suaves para todo el mundo .


Hay muchas razones por las que su carrito de compras de Magento podría funcionar con lentitud, pero no hay excusas para que haya una variedad de formas de resolver el problema y hacerlo bastante rápido. Habilitar Gzip modificando su archivo htaccess es un comienzo. También puede instalar la extensión fooman speedster. El tipo de servidor utilizado también determinará la velocidad de su tienda. Más consejos y una mejor explicación aquí http://www.interactone.com/how-to-speed-up-magento/


Magento es muy lento porque el diseño de la base de datos no es muy bueno. El código es un desastre y es muy difícil de actualizar y optimizar. Por lo tanto, todas las optimizaciones se realizan a través de caché en lugar de código.

Por otra parte. Es una tienda en línea con muchas herramientas. Entonces, si necesita una tienda virtual flexible, compre un servidor muy potente y estará bien.


Posiblemente también haya una razón no obvia por la cual su interfaz de administrador es muy lenta. Magento tiene un módulo llamado Mage_AdminNotification. Intenta deshabilitar esa extensión Porque lo que hace es consultar magentocommerce.com para nuevos mensajes de actualización. Si sus servidores son lentos, su página de administración espera y, en efecto, es lenta debido al retraso de la red y la carga de las noticias externas. Si ha asegurado la conexión de su servidor saliente a través de un firewall, esto puede ser aún más frustrante, ya que la interfaz de administración esperará el tiempo de espera cuando no pueda llegar a magentocommerce.com

Para desactivarlo: vaya a Sistema -> Configuración, desplácese hasta la parte inferior y presione Avanzado (en la sección Avanzado). Ahora desactive Mage_AdminNotification y guarde!




Solo he estado tangencialmente involucrado en la optimización de Magento para el rendimiento, pero aquí hay algunas razones por las que el sistema es tan lento

  1. Partes de Magento usan un sistema de base de datos EAV implementado sobre MySQL. Esto significa que consultar una sola "cosa" a menudo significa consultar varias filas

  2. Hay muchas cosas detrás de escena (configuración de la aplicación, configuración del sistema, configuración del diseño, etc.) que involucran la construcción de gigantescos árboles XML en la memoria y luego "consultar" esos mismos árboles para obtener información. Esto requiere memoria (almacenamiento de los árboles) y CPU (análisis de los árboles). Algunos de estos (especialmente el árbol de diseño) son enormes. Además, a menos que el almacenamiento en caché esté activado, estos árboles se crean a partir de archivos en el disco y en cada solicitud .

  3. Magento usa su sistema de configuración para permitirte anular las clases. Esta es una característica poderosa, pero significa que cada vez que se crea una instancia de un modelo, un ayudante o un controlador, se deben ejecutar instrucciones PHP adicionales para determinar si se necesita un archivo de clase original o un reemplazo de archivos de clase. Esto se suma.

  4. Además del sistema de diseño, el sistema de plantillas de Magento implica una gran cantidad de renderizado recursivo. Esto se suma.

En general, a los ingenieros de Magento se les encomendó, en primer lugar, la creación del sistema más flexible y personalizable posible y la preocupación por el rendimiento más adelante.

Lo primero que puede hacer para garantizar un mejor rendimiento es activar el almacenamiento en caché (Sistema -> Gestión de caché). Esto aliviará parte del bloqueo de CPU / disco que continúa mientras Magento está construyendo sus varios árboles XML.

Lo segundo que querrá hacer es asegurarse de que su anfitrión y el equipo de operaciones tengan experiencia en el ajuste del rendimiento de Magento. Si confía en el plan de $ 7 / mes para llevarlo a cabo, bueno, buena suerte con eso.


Solo tengo una experiencia superficial con Magento. Lo instalé en un grid-server compartido y la carga de la página fue triste ~ 5 + segundos. Por suerte, lo instalé en mi servidor dedicado optimizado para sitios CMS, y se sintió muy, muy ágil.

Mi hosting dedicado tenía ~ 10 Joomla! sitios y un sitio de VBullitin en ejecución.

Mi suposición es que no va a ser un rendimiento en el alojamiento compartido. La sobre suscripción no permitirá suficientes recursos para que Magento se ejecute como debería.


también se reducirá a funcionalidad versus rendimiento.

El rendimiento sin formato se obtiene usando nginx, php-fpm, memcached, apc y un servidor diseñado correctamente.

Funcionalidad como el rendimiento de plesk y magento podría gestionarse teniendo en cuenta toda la infraestructura en perspectiva al diseñar una nube de rendimiento magento.