Los propietarios de las tiendas Magento a menudo buscan formas de acelerar Magento para aumentar el nivel de servicio al cliente. Internet está lleno de recomendaciones sobre el ajuste fino del software del servidor, lo que supone ayudar a lograr el máximo impulso del rendimiento. ¿Cuáles de ellos realmente funcionan? El equipo de Amasty ha realizado una investigación y está listo para compartir con usted los resultados de la misma.
En este artículo no nos centraremos en los problemas relacionados con el ajuste fino de los parámetros del servidor web, PHP o del servidor de base de datos, ya que es demasiado difícil proporcionar datos de configuración precisos que garanticen el aumento del rendimiento de una tienda Magento. En cambio, analizaríamos algunas variantes simples de aumento de rendimiento que cualquiera puede implementar:
- Instalación del acelerador de PHP;
- Selección del servidor de base de datos;
- Selección adecuada del tipo de unidad de disco;
¿Está buscando la forma de optimizar el rendimiento de Magento/Magento 2? Echa un vistazo a nuestro nuevo Magento 2 Speed Optimizer . Por cierto, también tenemos el análogo para Magento 1 .
Instalación del acelerador de PHP
Actualmente, algunos aceleradores están disponibles para PHP: APC, Xcache, Zend OpCache. Varias pruebas muestran un aumento del rendimiento de Magento con el uso de cualquiera de estos aceleradores. Pero, ¿cuál de ellos proporciona el mayor impulso? ¿Hay alguna diferencia en el rendimiento según la versión de PHP? En este artículo probaremos los aceleradores mencionados anteriormente y compararemos su productividad.
Selección del servidor de base de datos
Una parte importante de las ofertas de las empresas de alojamiento incluyen un servidor de base de datos basado en MySQL Community Edition producido por Oracle. Algunas de las empresas de alojamiento que se especializan en la optimización de servidores para Magento ofrecen como alternativa PerconaServer producido por Percona.
PerconaServer es una realización alternativa del servidor de base de datos compatible con MySQL y se puede utilizar en Magento sin modificar el código. Pero, ¿es más eficiente que el servidor MySQL normal? ¿Debe uno cambiar a este servidor si ya está usando el servidor MySQL de Oracle? En este artículo intentaremos responder a estas preguntas.
Selección adecuada de almacenamiento
Hace solo 5 años, la mayoría de los servidores disponían de HDD mecánico clásico. Pero hoy SSD, sin duda, ha conquistado el mercado y se ha llevado una parte significativa de sus colegas más lentos. No le llevaría mucho tiempo encontrar un servidor con SSD en lugar de HDD instalado o actualizar uno existente con un nuevo SSD.
La velocidad de SSD supera el disco mecánico normal en docenas de veces. A medida que pasa el tiempo, el precio de las soluciones basadas en SSD ha disminuido significativamente y la estabilidad ha aumentado. En este artículo intentaremos comparar el rendimiento de una tienda Magento trabajando en HDD y SSD.
Descripción de la configuración de prueba
Configuración de hardware
CPU: procesador AMD FX(tm)-6100 de seis núcleos
RAM: 16GB
DISCO: SSD 128G (OCZ Vertex4) o HDD 500G (WDC WD5000AAKX)
Descripción de la metodología de prueba
Ambas configuraciones funcionan sobre la base del sistema operativo Debian GNU/Linux (amd64), Nginx, PHP 5.4.4 o PHP 5.5.9 (10 trabajadores FastCGI), MySQL 5.5.35 o PerconaServer 5.5.36.
Para crear una tienda de tráfico se utiliza la utilidad Siege. Imita clics aleatorios en enlaces de la tienda (los enlaces se toman del archivo sitemap.xml de la tienda).
$ siege -t 60s -i -f siege.urls.txt -c <núm-usuarios>
t 60s — para realizar la prueba durante 60 segundos
c <num-users> – para imitar la actividad simultánea <num-users>
i — para usar intervalos de retraso aleatorios antes de la solicitud repetida (imita la lectura de la página por parte del usuario)
f siege.urls.txt — para especificar el archivo que contiene la lista de URL para la prueba
Dado que no todos tienen la misma cantidad de visitantes, tuvimos algunas graduaciones de la cantidad de usuarios simultáneos: 5, 10, 15, 20, 25, 30. Esto debería ser suficiente para estimar la influencia de la optimización elegida en el resultado final. actuación.
HDD vs SSD: ¿debería usar tecnologías antiguas para mi tienda Magento?
A pesar de la popularidad de SSD, una cantidad significativa de servidores hasta ahora usan HDD mecánicos lentos. Entre las ventajas de los mismos se encuentran el bajo costo por 1 Gb, la confiabilidad comprobada por el tiempo y la gran cantidad de empresas de hospedaje, que ofrecen servidores con HDD. Pero, ¿es bueno usar una tecnología anticuada en los casos en que la velocidad del servicio al cliente es de suma importancia?
Para brindarle una imagen más detallada, hemos probado el rendimiento de Magento en configuraciones con SDD y HDD.
Servidor ejecutándose en disco HDD (catálogo/producto)
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.26 |
0.30 |
0.44 |
0,63 |
0.89 |
1.19 |
Tasa de transacción, trans/s |
6.72 |
12.73 |
15.95 |
17.53 |
17.73 |
17.76 |
Servidor ejecutándose en disco SSD (catálogo/producto)
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.20 |
0.22 |
0.31 |
0,45 |
0,61 |
0.91 |
Tasa de transacción, trans/s |
6.82 |
14.32 |
18.55 |
21.15 |
22.35 |
21.22 |
Servidor ejecutándose en disco HDD (búsqueda)
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.226 |
0.362 |
0.544 |
0.724 |
0.902 |
1.083 |
Tasa de transacción, trans/s |
21.8 |
27.2 |
27.2 |
27.2 |
27.3 |
27.2 |
Servidor ejecutándose en disco SSD (búsqueda)
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.176 |
0.312 |
0.467 |
0.619 |
0.775 |
0.921 |
Tasa de transacción, trans/s |
27.8 |
31.6 |
31.7 |
31.8 |
31.8 |
32 |
Diagrama El tiempo de respuesta muestra una excelencia insignificante de SSD sobre HDD en las tareas relacionadas con el servicio al cliente (catálogo o vista de página de producto). Esto se puede atribuir al hecho de que en esta prueba el rendimiento de Magento se limitó a la capacidad de cálculo de las unidades de CPU que participaron en la prueba. Durante la prueba, nos costó mucho lograr el uso de HDD en un 80-90 %, aunque esto es suficiente para ignorar la diferencia de velocidad entre SDD y HDD en teoría. Si no usa su HDD al 100%, este no es un punto débil del rendimiento del servidor.
Pero una situación totalmente diferente (diagrama de comparación de rendimiento de HDD vs SSD) ocurre en la operación de backend (por ejemplo, recálculo de índice, copia de seguridad). En este caso SSD muestra una notable excelencia en cualquier tipo de operaciones. También hemos analizado el caso en el que un servidor no contiene todos los datos necesarios en la caché del sistema de archivos (en el diagrama, este caso se denomina caché en frío). En este caso, la velocidad del rendimiento de las operaciones depende en gran medida del rendimiento del disco, ya que los datos deben leerse del disco.
Estos resultados nos llevan a la siguiente conclusión:
- El servidor debe tener suficiente RAM para un trabajo eficiente de la memoria caché del disco. En este caso, todos los datos estáticos se extraerán de una caché de memoria muy rápida y el rendimiento del disco no influirá en estas operaciones.
- La instalación de SSD acelerará el rendimiento de las operaciones de reindexación y copia de seguridad, pero no puede mostrar un aumento significativo para las operaciones de interfaz (en caso de que la memoria caché del disco funcione de manera eficiente).
Comparación de aceleradores de PHP
Cuando el intérprete de PHP realiza las solicitudes recibidas del servidor web, primero se carga el código (se encuentran y cargan las dependencias del script) y luego el resultado se transforma en el código intermedio (código de operación de PHP) y solo después de que el intérprete de PHP inicia la ejecución de el código de operación recibido.
La esencia del trabajo de los aceleradores de PHP radica en el almacenamiento en caché del código de operación recibido en la penúltima etapa, lo que permite omitir la etapa de carga y transformación del código para futuras solicitudes. De esta manera, el aumento en el rendimiento se recibe solo después de la segunda solicitud del script PHP, cuyo código de operación ya está en el caché. Esta es la razón por la que no recibiría un aumento de rendimiento si PHP funciona en modo CLI. En tal caso, el caché del código de operación se destruye justo después de que finalice el script que lo creó y se inicializará en el próximo inicio del intérprete en el modo CLI.
Dado que PHP 5.5.x contiene el acelerador incorporado, ZendOpcache para comparar el rendimiento de PHP 5.4.4 y PHP 5.5.9, el acelerador se desactivó a la fuerza (opcache.enable=0 en PHP.INI).
Dado que APC no está portado a PHP 5.5.x, se usa PHP 5.4.4 para probar todos los aceleradores.
PHP 5.4.4, MySQL 5.5.35
Configuraciones de PHP adicionales para esta prueba:
- límite_memoria=512M
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.59 |
0.77 |
1.37 |
1,95 |
2.59 |
3.33 |
Tasa de transacción, trans/s |
4.61 |
7.73 |
8.07 |
7.98 |
7.86 |
7.63 |
PHP 5.5.9, MySQL 5.5.35
Configuraciones de PHP adicionales para esta prueba:
- límite_memoria=512M
- opcache.activar=0
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.59 |
0.81 |
1.34 |
1.97 |
2.53 |
3.07 |
Tasa de transacción, trans/s |
4.32 |
7.52 |
8.06 |
7.96 |
8.09 |
8.14 |
PHP 5.4.4 (APC 3.1.13), MySQL 5.5.35
Configuraciones de PHP adicionales para esta prueba:
- límite_memoria=512M
- apc.habilitado=1
- apc.cache_by_default=1
- apc.shm_size=64M
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.47 |
0,65 |
1.04 |
1.56 |
2.04 |
2.50 |
Tasa de transacción, trans/s |
4.72 |
8.74 |
9.66 |
9.57 |
9.71 |
9.74 |
PHP 5.4.4 (Xcache 3.1.0), MySQL 5.5.35
Configuraciones de PHP adicionales para esta prueba:
- límite_memoria=512M
- xcache.shm_scheme=”mapa”
- xcaché.tamaño=64M
- xcaché.contar=6
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.51 |
0,65 |
1.21 |
1.63 |
2.18 |
2.72 |
Tasa de transacción, trans/s |
4.89 |
8.29 |
8.85 |
9.24 |
9.06 |
9.07 |
PHP 5.4.4 (ZendOpcache 7.0.3), MySQL 5.5.35
Configuraciones de PHP adicionales para esta prueba:
- límite_memoria=512M
- opcache.activar=1
- opcache.memory_consumo=64
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.38 |
0.52 |
0.78 |
1.13 |
1.55 |
1.93 |
Tasa de transacción, trans/s |
5.48 |
9.85 |
11.82 |
12.29 |
11.96 |
12.19 |
PHP 5.5.9 (ZendOpcache), MySQL 5.5.35
Configuraciones de PHP adicionales para esta prueba:
- límite_memoria=512M
- opcache.activar=1
- opcache.memory_consumo=64
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.40 |
0.47 |
0.71 |
1.19 |
1.52 |
1.80 |
Tasa de transacción, trans/s |
5.49 |
9.87 |
12.11 |
12.05 |
12.25 |
12.72 |
Ambos diagramas muestran la excelencia indudable del acelerador Zend OpCache. Durante la prueba de PHP 5.4.4 y PHP 5.5.9 sin aceleradores y con Zend OpCache activado, el rendimiento no presenta diferencias significativas. De esta manera, se puede decir que no tiene sentido actualizar a PHP 5.5.x si ya está utilizando PHP 5.4.x. Basta con instalar el acelerador Zend OpCache en la versión de PHP que esté utilizando.
Comparación de compatibilidad con MySQL 5.5.35 y PerconaServer 5.5.36
Una de las principales optimizaciones que ofrece para Magento es el cambio de la base de datos por defecto MySQL Community Edition a PerconaServer, que es la versión mejorada de MySQL Community Edition y está desarrollada por la empresa independiente Percona.
MySQL 5.5.35
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0.59 |
0.77 |
1.37 |
1,95 |
2.59 |
3.33 |
Tasa de transacción, trans/s |
4.61 |
7.73 |
8.07 |
7.98 |
7.86 |
7.63 |
PerconaServer 5.5.36
Número de usuarios simultáneos |
||||||
5 |
10 |
15 |
20 |
25 |
30 |
|
Tiempo de respuesta, segundos |
0,60 |
0.85 |
1.34 |
2.04 |
2.59 |
3.24 |
Tasa de transacción, trans/s |
4.52 |
7.36 |
7.99 |
7.85 |
7.77 |
7.76 |
La prueba de la influencia del servidor de la base de datos en el rendimiento muestra una diferencia insignificante. Esto se puede atribuir a la imprecisión de los cálculos. Esto nos permite decir que PerconaServer no tiene diferencias significativas con MySQL CE, lo cual está demostrado por las pruebas de rendimiento.
La diferencia en las versiones puede ser importante solo para aquellas instalaciones que procesan una cantidad significativa de pedidos.
¿Todavía está confundido acerca de las optimizaciones del servidor para su tienda Magento? Escríbanos y le ayudaremos de inmediato.