¿Por qué Magento 2 es extremadamente lento?

31

Usé Magento 1.9 y estaba bien. No era tan rápido como un simple sitio de Joomla, pero tenía muchos clientes sin ningún problema.

Ahora quería actualizar mi sitio a Magento 2, compré un nuevo host (el mismo que tengo actualmente) e instalé Magento 2 sin datos de muestra y es difícil de usar. No solo el administrador, sino que la página de inicio vacía también lleva minutos cargar y cuando intento crear una cuenta obtengo un error que dice "Se alcanzó el límite de recursos"

Intenté con Facebook FlashCache, OptimumCache y Cloudflare, pero nada ha cambiado a pesar de que los creadores dijeron que Magento 2 es mucho más rápido que la primera versión.

Me gustaría entender por qué no pueden arreglarlo después de tantos años y por qué tanta gente lo usa.

¿Hay alguna manera de sujetarlo?

ACTUALIZAR:

Utilicé mgt-commerce antes y fue increíblemente rápido, tardó menos de 2 segundos en cargarse pero costó demasiado: Precio de AWS + € 199.00

Ofrecieron php7 / HHVM, Varnish, Redis, CDN, NGINX por defecto, supongo que por eso fue rápido.

Tuve que comprar una cuenta de Amazon WS, no sé por qué supongo que mi sitio fue alojado por Amazon.

Estoy buscando la misma velocidad por un precio más bajo. Un ejemplo de proveedor de VPS.

Estaba mirando a mi alrededor, pero descubrí que todos los proveedores de hosting afirman que tienen hosting Magento. Siteground, Mochahost, Hostgator, Fastcomet, etc.

Quizás haya un proveedor de alojamiento que instale estos cachés para vencer a los competidores.

PD: Perdón si mi publicación parece ser tonta para los programadores, lamentablemente elegí economía, comercio y marketing en la universidad :(

petetcap
fuente
¿Puedes explicar qué has probado con Facebook FlashCache, OptimumCache y Cloudflare por favor?
mbalparda
1
Parece su problema medioambiental. En mi vm está abierto cms / página de inicio sin FPC <0.1s y con FPC <0.01s
KAndy
deshabilitar css / js fusionando tiendas> configuración> avanzado> desarrollador vea mi comentario aquí magento.stackexchange.com/questions/150073/…
Konstantin Gerasimov
2
Estoy empezando con M2 y muy frustrado con su rendimiento también. Si su software requiere miles de cachés para ejecutarse para un solo usuario, hay algo mal. Espero cambiar de opinión pronto.
Ricardo Martins
@KAndy, ¿puedes escribir qué vm usas? Si usa vagabundo, ¿sería posible compartir el script de aprovisionamiento? Probé varias máquinas virtuales, pero todas no funcionaron. La instalación de Magento se realizó correctamente, pero las páginas no se cargan.
Alan

Respuestas:

24

Hay múltiples recursos disponibles para mejorar el rendimiento de Magento 2 y todos están bastante bien documentados.

Modo: Magento 2 ha introducido modos, siendo el predeterminado el más lento. Pruebe el modo de desarrollador y siempre ejecute su tienda en vivo en modo de producción. Más información aquí .

Caché: Varnish es compatible de fábrica, bastante fácil de configurar y usar.

Redis: Redis es una solución de caché back-end opcional para reemplazar Zend_Cache_Backend_File, que se usa en Magento 2 de forma predeterminada. Se puede usar para el almacenamiento de sesiones y el almacenamiento en caché de páginas.

Memcache: Memcached es un almacén de valores clave en memoria para pequeños fragmentos de datos arbitrarios (cadenas, objetos) de los resultados de llamadas a la base de datos, llamadas a la API o representación de páginas. En Magento 2 se puede usar para sesiones .

PHP 7: Magento 2 es compatible con PHP 7 de fábrica. Hay mucha investigación sobre cómo PHP 7 afecta el rendimiento para siempre.

Esto es solo el comienzo, debe poder ajustar su servidor web y su servidor de base de datos, pero eso dependerá en gran medida de su caso de uso particular.

Si no sabe cómo hacerlo usted mismo, hay muchas empresas especializadas en hosting Magento.

Para un entorno de desarrollo bastante sólido, mi recomendación personal es Paliarush 'Vagrant o la VM que obtuve de Magento para los cursos. Hay una imagen oficial de docker próximamente.

mbalparda
fuente
9

Magento funciona razonablemente bien incluso en modo desarrollador. Sin embargo, necesita alguna configuración inicial.

Primero asegúrese de que Magento esté configurado correctamente, suponiendo que esté en Ubuntu:

Utilice la última compilación ya que Magento 2.2+ es compatible con php 7.1 http://devdocs.magento.com/guides/v2.2/install-gde/prereq/php-ubuntu.html

sudo apt-get install php7.1 php7.1-imap php7.1-xml php7.1-dom php7.1-intl

Si está ejecutando múltiples versiones de php, configure 7.1 como predeterminado a través de

sudo update-alternatives --set php /usr/bin/php7.1

Sobre Magento

  1. Establecer como desarrollador si aún no php -f bin/magento deploy:mode:show

    php -f bin/magento deploy:mode:set developer

  2. Verifique que el caché de Magento esté habilitado

    php -f bin/magento cache:status

Si no está habilitado (serie de 1)

php -f bin/magento cache:enable

Habilitar agrupación JS / CSS

Tiendas> Configuración> Avanzado> Desarrollador

* Tenga en cuenta que el elemento del menú anterior solo aparece mientras está en modo desarrollador

Ajustes de plantilla

  • Minify HTML = Sí

Configuraciones Javascript

  • Fusionar archivos JS = Sí

  • Habilitar JS Bundling = Sí

  • Minificar archivos JS = Sí

Configuraciones CSS

  • Fusionar CSS = Sí
  • Minify CSS = Sí

Haga un vaciado de caché de aquí en adelante después de cada paso de vaciado del caché, esta es su línea de base para tratar de mejorar el tiempo de carga.

php -f bin/magento cache:flush

Paquete avanzado

Esta sería una publicación en sí misma siguiendo las pautas de los desarrolladores de magento sobre cómo habilitar esto, esto podría aumentar aún más la carga de JS de la interfaz haciéndolo 3 veces más rápido.

Utilizar Redis

sudo apt-get update
sudo apt-get install build-essential tcl8.5
sudo apt-get install make
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
cd utils/
sudo ./install_server.sh

Editar /www/project/app/etc/env.php

'cache' => 
  array (
    'frontend' => 
    array (
      'default' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'database' => '0',
          'port' => '6379',
        ),
      ),
      'page_cache' => 
      array (
        'backend' => 'Cm_Cache_Backend_Redis',
        'backend_options' => 
        array (
          'server' => '127.0.0.1',
          'port' => '6379',
          'database' => '1',
          'compress_data' => '0',
        ),
      ),
    ),
  ),

Usa PHP-FPM

apt-get install php7.1-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.1-fpm
sudo service php7.1-fpm restart
sudo service apache2 restart

Habilitar opcache en PHP

Edite /etc/php/7.1/apache2/php.ini find opcache.enable

opcache.enable=1

También recomendaría usar un Cloud DB como AWS RDS u otro, le ahorrará los dolores de cabeza de configurar mysql.

Si ahora habilita el modo de producción php -f bin/magento deploy:mode:set production

deberías encontrar que está funcionando razonablemente bien.

Yendo más lejos desde aquí, puede agregar Barniz, Cambiar a Nginx, agregar un CDN para archivos estáticos.

Joel Davey
fuente
2

También tuve este problema en un Macbook Pro (finales de 2016) con MAMP.

Lo que quería hacer era crear un tema de Magento 2. Había desactivado todos los cachés y me tomó como 30 segundos volver a cargar una página (frontend y back-end).

Activé todos los cachés con el comando "php magento cache: enable" y el sitio se carga muy rápido. Todavía puedo trabajar con Grunt y LESS sin desactivar ningún tipo de caché.

Klevis Miho
fuente
1

Magento 2 no es lento por defecto. Tienes que seguir estos pasos para hacerlo rápido:

  1. Servidor y requisitos del sistema

  2. Actualizar versión de Magento

  3. Habilitar caché de barniz

  4. Configurar Memcached

  5. Habilitar categorías y productos planos

  6. Optimizar Javascript y CSS

  7. Red de entrega de contenidos

  8. Usa un tema ligero

  9. Extensiones sin errores

  10. Las imágenes deben estar completamente optimizadas

Syed Muneeb Ul Hasan
fuente
22
Lo siento, pero si tiene que agregar varios niveles de almacenamiento en caché a una aplicación, entonces es lento de forma predeterminada.
Robert Egginton
Robert: Amigo, agregar caché a varias capas de un sistema de varias capas es el tipo correcto de arquitectura. No estamos hablando de caché sobre caché ... -o-
miracules
Usar cachés durante el desarrollo no es realmente una solución óptima. Borrar la memoria caché cada vez que se realiza un cambio se parece más a desarrollar en un lenguaje compilado, no en PHP.
Alan
0

¿Cómo crees que Magento 2 es lento? Mi sitio que utiliza un tema muy pesado tiene un sólido 93/100 en Velocidad de página y tiempos de carga son 2 segundos. Yo diría que obtenga un mejor host para Magento porque su servidor web juega un papel importante en el rendimiento de su sitio. En cuanto al modo "predeterminado", el más lento no es cierto en absoluto. Ejecuté mi tienda en modo predeterminado hasta que estuve listo para cambiar al modo de producción y obtuvo un 91/100 en modo predeterminado y solo fue a un 93/100 después de cambiar al modo de producción.

Obtenga un mejor host y un mejor servidor web si realmente desea usar Magento 2.

James Stubbs
fuente
Después de que magento cache:disableel tiempo de carga supera los 30 segundos.
Tom Anderson