Magento2 funciona muy lento en el desarrollo localhost

25

Recientemente comencé a desarrollar nuevas extensiones o personalizaciones de magento2, y mi primera impresión fue una pesadilla. ¿Tengo que esperar unos 20-30 segundos por cada cambio que hago? ¿De Verdad?

Estoy hablando del modo de desarrollo , sé que en producción con caché habilitado y otras cosas, el sitio web puede ser fluido. Pero cuando estoy trabajando con un problema de extensión o diseño, necesito eliminar archivos estáticos, borrar el caché, etc.

Mi pregunta es, ¿cómo trabajan todos los desarrolladores de M2? porque no creo que tengas que esperar entre 20 y 30 segundos para actualizar la página ...

Mi entorno: Mi PC es "buena" i5 con 8 gb de RAM. Necesito trabajar con Windows, así que uso vagabundo:

  • Uso de los 4 núcleos de la CPU
  • Usa 5120MB de RAM
  • Ubuntu / trusty64 - Ubuntu 14.04
  • Versión de PHP 7.0.12-1 + deb.sury.org ~ trusty + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ confiable
  • Magento 2.1.2 se instala solo con datos de muestra (no se instalan más módulos)
  • (Pregúntame si quieres saber algo más)

¿Qué está sucediendo exactamente? Por lo general, M2 responde bien, lento pero bien, alrededor de 5-10 segundos para cargar las páginas, pero a veces (más de las veces) ¡simplemente se pega para siempre! a veces es la primera página y a veces son los archivos css, js, html, pero siempre el problema es con TTFB.

También vi un problema al configurar el asistente ... con angular.js estos archivos duran para siempre ...

Estas 2 imágenes tratan sobre la navegación dentro del asistente de configuración.

http://imgur.com/Izoyuhj http://imgur.com/Vs5q8eT

Luego, otro navegando en el catálogo de frontend: http://imgur.com/oXYC52D

¿Qué estoy preguntando exactamente? ¿Esto es normal? ¿Ustedes trabajan con este momento? Comenté esto con algunos colegas y simplemente no creemos, ¿tengo que estar trabajando así? A veces me desespero de esperar todo el tiempo mirando la pantalla ...

Si alguien me pide que le muestre una prueba, como crear un nuevo producto o algo así, simplemente se asusta ... Creando un nuevo pedido, llenando los campos y cada campo ejecuta un js que dura de 5 a 6 segundos ...

No lo sé, pero me siento tan mal desarrollándome con estas cosas ...

Slayerbleast
fuente
No he tenido la oportunidad de jugar con magento 2: pero supongo que la mayoría de los problemas de rendimiento provienen de su entorno vagabundo. ¿Usas virtualbox con vagabundo u otra cosa? El uso de múltiples núcleos con virtualbox degrada el rendimiento. ¿Ejecutas el magento desde una carpeta compartida en el vagabundo> magento escribe los archivos nuevamente en el mismo recurso compartido donde tienes problemas de rendimiento?
Olli Tyynelä
También es posible que se esté quedando sin memoria en su sistema, lo que lleva a usar el intercambio en el host si le da 5gigs vagabundos. solo aumente la cantidad si realmente lo necesita.
Olli Tyynelä
Una gran parte de su problema es que está en Windows. Estuve en Windows durante años y fue súper lento con vagabundo / magento. Esto se debe al modo de sincronización de archivos, no está a la altura de nfs. Comencé el arranque dual en el escritorio de Ubuntu y mis sitios magento fueron muy rápidos, luego, un tiempo después, obtuve una Mac, que usa NFS, y también es muy rápida.
Shawn Abramson
Sí, es vagabundo con virtualbox. ¿Por qué usar más núcleos tiene que degradar el rendimiento? Supongo que dar todos los recursos a VM puede ser lento "mi PC" pero más rápido mi VM ... Y la carpeta que estoy usando es / var / www (Intenté no usar la carpeta compartida, es solo "linux" lo que se está ejecutando ahora). ¿Cómo puedo ver lo que está fallando? Puedo ejecutar la parte superior, o comandos como que .... pero no saben cómo interpretar ...
slayerbleast
@ShawnAbramson Sí ... sugerimos instalar el arranque dual solo para probarlo porque, como dije, no creemos que los desarrolladores de M2 ​​estén trabajando como lo estoy haciendo yo, jeje ...
slayerbleast

Respuestas:

8

Lo intenté todo y lo único que funciona es la máquina virtual que proporciona bitnami. https://bitnami.com/stack/magento/virtual-machine

En serio, no sé qué tiene este vm, pero va muy rápido. Intenté crear mi VM usando una nueva instalación de Ubuntu, CentOS, etc. Pero no funciona tan bien como esta VM.

Slayerbleast
fuente
Creo que la principal diferencia con las especificaciones de esta VM es memcache? Lo cual, en mi Windows (al menos en PHP 7, no es posible)
MackieeE
6

deshabilitar la fusión y minificación de CSS / JS:

Stores > Configuration > CSS Settings (Javascript Settings) > Merge CSS (Merge JS) > NO

Stores > Configuration > CSS Settings (Javascript Settings) > Minify CSS (Minify JS) > NO

Consulte también esta guía sobre cómo mejorar el rendimiento de Magento 2.

Konstantin Gerasimov
fuente
1
La configuración predeterminada ya tiene estos valores. Y esto no afecta tanto ...
slayerbleast
Entonces, ¿la fusión sería útil en un servidor en línea? ¿Más gastos generales para el procesamiento y no la descarga?
Mohammed Joraid
¿Por qué le CSS discapacitados / Fusión JS y minifying, es, literalmente, una opción que hay que aumentar la velocidad, esto me parece como disparar en el pie
John
4

Encontré que el modo desarrollador deshabilita todo, lo cual fue excesivo. Hay ciertos aspectos que deseo almacenar en caché, como la traducción. Afortunadamente env.php, aún puede establecer qué cachés usar específicamente:

'cache_types' => 
      array (
        'config' => 1,
        'layout' => 0,
        'block_html' => 0,
        'collections' => 1,
        'reflection' => 1,
        'db_ddl' => 0,
        'eav' => 1,
        'customer_notification' => 1,
        'target_rule' => 1,
        'full_page' => 0,
        'config_integration' => 1,
        'config_integration_api' => 1,
        'translate' => 1,
        'config_webservice' => 1,
        'compiled_config' => 1,
      ),

Esto fue lo anterior que elegí almacenar en caché mientras desarrollaba en Checkout, ya que era en gran medida front-end. Elegí no almacenar en caché el diseño; Bloques y página completa para ver mis cambios.

MackieeE
fuente
¡Un millón de gracias! Tuve este problema porque actualicé Magento2 a una versión más nueva e hice una instalación nueva. Aparentemente estaba sobrescribiendo mi env.php, lo que lo hacía infinitamente lento. Esta corrección a env.php lo arregló. ¡Gracias de nuevo!
codiga
4

Sugerencias de Magento publicadas después de responder esta pregunta. Leyendo otras respuestas, creo que esta información podría ser una adición útil

http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/optimal-dev-environment.html

Configuración óptima

La siguiente es una lista de optimizaciones que puede hacer en su máquina de desarrollo local

  • Magento recomienda instalar y usar la última versión compatible de PHP 7 para aumentar el rendimiento.
  • Reemplace su base de datos MySQL con Percona.
  • Asegúrese de instalar y habilitar PHP OPcache.
  • Xdebug está desactivado por defecto. Active esta función solo cuando la necesite, ya que requiere mucha memoria y degrada el rendimiento. La configuración xdebug.max_nesting_level debe establecerse en 200 o más para Magento. Puede aumentar la memoria disponible para PHP para obtener un aumento en el rendimiento con Xdebug activado.
  • Si necesita datos de muestra, puede instalarlos utilizando Composer o clonando repositorios.
  • Para acelerar el desarrollo front-end, desactive la fusión de CSS y JavaScript.
  • Asegúrese de que el almacenamiento en caché esté activado (este es el comportamiento predeterminado). En general, solo la memoria caché de página y la memoria caché de bloque se deben desactivar para el desarrollo y volver a activarse durante las pruebas.
  • La validación de marca de tiempo de Opcache siempre debe estar activada para el desarrollo. El desarrollo es imposible con opcache activado y revalidación desactivado porque cualquier modificación de PHP requeriría un reinicio de caché.
Ian en Xantek
fuente
Para mí, Opcache hizo el truco. Se está cargando bastante rápido ahora.
Amit Singh
Otra cosa que he encontrado es que Xdebug se puede habilitar por defecto, lo que también tiene un impacto en el rendimiento. Verifique /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini. Después de cambiar, creo que necesita reiniciar el contenedor docker restart {web-container-name}
Ian en Xantek
1

Enciende tu caché.

Ve <your magento 2 directory>/biny ejecuta este comando magento cache:enable.

Limpie el caché cuando edite la interfaz para ver lo que ha editado.

Ve <your magento 2 directory>/biny ejecuta este comando magento cache:clean.

Mi referencia

Soy nuevo en magento 2 también. Espero que alguien tenga una manera de hacer magento 2 rápido incluso cuando el caché está deshabilitado.

Nulo
fuente
1
No sé si esta es una solución viable ... En todas partes dice deshabilitar el caché en modo de desarrollo ...
slayerbleast
66
Por supuesto, si puedo activar el caché, el sitio irá más rápido ... pero cada cambio que tendrá que limpiar la caché ... sigue siendo una pérdida de tiempo pienso ...
slayerbleast
1

Mi configuración en Ubuntu 16.10 para desarrollo frontend para MENOS ediciones :

  1. Establecer modo desarrollador:

    php bin/magento deploy:mode:set developer

  2. Habilitar todas las cachés:

    php bin / magento c: habilitar

  3. Flujo de trabajo de desarrollo frontal configurado para compilación del lado del servidor

  4. Después de cualquier cambio en menos archivos ejecutados

    gruñido limpio

(La última vez que lo mencioné para comenzar: un reloj gruñón con navegación en vivo y es genial)

BartZalas
fuente
0

Solo quiero compartir mi experiencia personal. La solución que surgió fue instalar Xampp con php versión 7.0 ya que Magento no es totalmente compatible con una versión superior de Php. Intenté Bitnami Image en la respuesta pero no funcionó como esperaba Xampp 7.0.23 Enlace de descarga

usuario3127648
fuente
De Verdad? Con xampp está funcionando bien? Lo intenté muchas veces y fue terrible ... ¿Qué versión de Magento? Tal vez hayan arreglado algo de rendimiento con esta vez. Intentaré de nuevo. ¿Y por qué la imagen de Bitnami no funciona como esperabas?
slayerbleast
Tengo Magento 2.1 y 7.0 Xampp enlace añadido anteriormente, la imagen Bitnami En comparación con 7,0 XAMPP XAMPP he encontrado fácil y más rápido
user3127648
0

PHP creciente memory_limit en el archivo php.ini hará una buena diferencia. Sin embargo, no lo hará muy muy suave (aunque ahorrará tiempo).

El valor predeterminado es 512M. En mi máquina local configuré esto en "-1" (ilimitado) y proporciona un mejor tiempo de carga.

El valor recomendado es memory_limit = 2G mencionado aquí .

Magento es pesado y necesita hardware de alto rendimiento como SSD para ser fluido :(

Binod - GoFundMonica
fuente
memory_limitno tiene ninguna relación con el rendimiento en absoluto. Es obvio por el nombre de la directiva.
Danila Vershinin
@DanielV. También me preguntaba sobre eso, pero luego encontré esto: devdocs.magento.com/guides/v2.2/install-gde/prereq/… donde dice 2G como valor recomendado
Binod - GoFundMonica
1
Nuevamente, se recomienda por sus propios motivos. Que no tienen absolutamente ninguna relación con el rendimiento. El límite de memoria solo está ahí para no detener su sistema por completo en caso de que algunos scripts PHP (o en este caso, módulos Magento) terminen consumiendo toda la RAM del servidor. No hay absolutamente ningún impacto en el rendimiento al establecer el valor demasiado bajo o demasiado alto. Es simplemente una directiva preventiva para hacer que el sistema sea más seguro. Y me sorprende que la gente asuma ciegamente que dar más memoria significa que el rendimiento se logra a través de esta directiva. No es y nunca lo será.
Danila Vershinin
Punto interesante, Daniel. Asumí ciegamente eso en realidad. ¿Cómo podemos demostrar esto? ¿Alguna sugerencia con la que me pueda guiar para que pueda experimentar esto?
Binod - GoFundMonica
Configúrelo demasiado bajo (por ejemplo, 16 MB, que seguramente no es suficiente para M2) y el PHP fallará con un error fatal. Instale tantos módulos como sea posible y configúrelo demasiado alto (por ejemplo, 4 GB) y las cosas funcionarán bien hasta que reciba pocos visitantes más del sitio, lo que seguramente hará que su servidor alcance el estado Sin memoria. No necesita estos experimentos si solo lee los documentos de esa directiva. PHP se ejecuta en la memoria todo el tiempo. No se cambia al disco ni hace cosas divertidas como esa.
Danila Vershinin el
0

Si tiene problemas para configurar en un cuadro Vagrant, seguramente será cómo se comparten sus carpetas. Deben compartirse a través de NFS.

Después de jugar con muchos cuadros diferentes, me di cuenta de que aunque había configurado NFS en la configuración, en realidad no funcionaba y el sistema estándar de intercambio VirtualBox estaba asumiendo el control.

Volví a lo básico y configuré un cuadro LEMP simple e instalé este complemento:

https://github.com/Learnosity/vagrant-nfs_guest

Confirmado que NFS estaba funcionando y que todo estaba bien.

engbmaso
fuente
0

Cosas que pueden hacer que su configuración de Magento 2 sea rápida en su servidor local o, en general, en cualquier entorno de servidor.

  1. Minify JS y CSS
  2. Use una aplicación de almacenamiento en caché como Redis o Memcached.
  3. Habilite todo el caché como block_html, layout, page_cache, etc. provisto por Magento 2.
  4. Fusionar CSS y JS
  5. Habilitar productos y categorías planas.

Ahora, cuando esté en el entorno de desarrollo, vacíe solo el caché necesario en lugar de vaciar todo el caché para evitar la reconstrucción completa del caché.

Sourabh Kumar Sharma
fuente
0

La razón principal por la cual magento2 es lento en modo desarrollador está relacionada con miles de archivos estáticos y compilados generados sobre la marcha.

Hay 3 soluciones para esto:

  • Montar todo el directorio con NFS (SSD sigue siendo obligatorio).

  • Monte solo el directorio de la aplicación (cualquiera que sea su hardware funcionará bien) pero pierde el acceso al directorio / vendor en su máquina host.

  • Monte todo el proyecto con rsync y excluya los directorios donde se generan los archivos (pub / static, generó / código, etc.).

Hice ese trabajo, pruébalo: https://github.com/zepgram/magento2-fast-vm/

Benjamin Calef
fuente