Tengo un problema de rendimiento con Magento 2.1
En mi tienda, tengo 90,000 productos. Agregué estos productos al jabón. Cuando hice esto, me llevó alrededor de 7 segundos para cada artículo (producto?) (Solicitud> Respuesta). En resumen, tomó algunos días iniciar todos los productos.
Ahora todos los productos están en la tienda. Todas las semanas tengo que actualizar algunas cosas en los artículos (productos). Cuando hago esto con jabón nuevamente, toma la misma duración. Cuando hago actualizaciones, la tienda no se puede usar. Un ejemplo de solicitud y respuesta están aquí: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz
Mi servidor tiene una CPU de 12 núcleos, 24 GB de RAM y SSD. Está ejecutando Ubuntu 16.04 con Apache2 PHP7-fpm y MYSQL.
Cuando veo el proceso de actualización, veo que 5 núcleos con MySQL están al 100% PHP está funcionando un poco y el resto está inactivo. El carnero es solo una pequeña cantidad utilizada iotop
dice que mi SSD está aburrida.
Observé el rendimiento de la base de datos y vi que Magento disparó en el proceso de adición de miles de comandos a la base de datos. ¿Esta bien?
Cuando lo actualizo con la importación Magento CSV, es mucho más rápido.
¿Qué puedo hacer para acelerar este Magento2? En esta situación, es imposible trabajar bien con esta tienda.
fuente
Respuestas:
Importación masiva
la clave es usar la importación por lotes, como usted mismo mencionó:
Considere repensar su API SOAP y cámbiela a un modo masivo, por ejemplo, puede crear un middleware que acepte los datos de su producto y genere un archivo csv que luego se pueda alimentar a Magento.
Hay algunas extensiones de terceros que ayudan con eso.
Consejos generales de rendimiento
Puedes intentar acelerar el propio Magento, pero obtendrás un aumento del 1 al 10% de cada mejora, cuando haces varias de ellas, el beneficio se multiplica:
En caso de que todo lo anterior esté hecho y necesite más rendimiento:
fuente
El problema aquí es que las llamadas SOAP son muy caras. Si inicia una solicitud SOAP para agregar / editar / eliminar un producto, Magento tiene que unir muchas tablas para obtener toda la información necesaria. Este comportamiento en combinación con PHP en sí mismo hace que sea lento para la cantidad de productos o datos que desea procesar.
Magento recomienda un clúster de servidores de 5 nodos (1 x DB, 4 x servidor web) para manejar el tráfico.
Recomendaría escalar horizontalmente, por ejemplo con AWS. Esto podría tener un mayor impacto en su negocio, pero en mi humilde opinión, no podrá ajustar Magento para obtener un mejor rendimiento.
Dentro de AWS, debe usar la función de un grupo de escala automática que es responsable de la cantidad de servidores que inicia. Cada vez que agrega los datos, se inician nuevos servidores para manejar la presión. Lo mismo se puede hacer con AWS RDS (Servicio DB) muy fácil y rápido.
En caso de que AWS no sea una opción, puede intentar ajustar Magento y PHP. Recomendaría verificar la configuración de:
fuente
Este enlace explica cómo ajustar el uso de la memoria MySQL. Como tiene tanta RAM, puede beneficiarse de asignar más a MySQL. Esa puede ser una solución más fácil y menos costosa ($) que construir un servidor de base de datos dedicado.
También puede encontrar útil la utilidad MySQL Workbench para ayudarlo con este ajuste y también para monitorear lo que MySQL está haciendo en general. La utilidad está hecha por Oracle / MySQL; No es una aplicación shareware aleatoria.
fuente