Cómo acelerar un sitio web 4 veces simplemente reconfigurando el servidor

Si está trabajando con un sitio que está creciendo gradualmente (aumenta la cantidad de productos, el tráfico de la publicidad), tarde o temprano tendrá que cambiar al modo de operación de alta carga, altas cargas de servidor. Pero, ¿qué sucede si su sitio no crece, el servidor falla cada vez más y se produce un bloqueo de datos? Es con este problema al que nos enfrentamos, al finalizar el sitio web de una tienda online de equipos de iluminación con un surtido de más de 100.000 productos.





situación inicial

El proyecto se ubicó en un servidor que tenía suficientes recursos para garantizar un funcionamiento rápido y sin problemas del sitio, incluso bajo cargas muy elevadas. Sin embargo, el servidor no respondió a las acciones de los usuarios o respondió muy lentamente, tan pronto como el tráfico del sitio aumentó aunque sea levemente. 





Encontrar el problema 

Llevamos a cabo una auditoría de la configuración del servidor y del sitio, dividiendo el trabajo en dos etapas: análisis del back-end y del front-end, y encontramos una velocidad de carga de página baja en el back-end: unos 80 segundos en las páginas más visitadas. , lo que finalmente condujo a una disminución significativa en la conversión.





Descubrimos que el problema principal era una configuración de caché y base de datos mal configurada.





Como resultado, se elaboró ​​un plan de acción de cuatro pasos que nos ayudó a lograr buenos resultados. ¿Qué hemos hecho?





Decisión

Paso 1. Configuración de la base de datos

MySQL , . , , , SWAP, , , .





2. InnoDB

InnoDB?





InnoDB , MyISAM, . InnoDB .





InnoDB – InnoDB , MyISAM . , , / . , InnoDB .





InnoDB. , :





# InnoDB parameters







innodb_file_per_table







innodb_flush_log_at_trx_commit







innodb_flush_method







innodb_buffer_pool_size







innodb_log_file_size







innodb_buffer_pool_instances







innodb_file_format







innodb_locks_unsafe_for_binlog







innodb_autoinc_lock_mode







transaction-isolation







innodb-data-file-path







innodb_log_buffer_size







innodb_io_capacity







innodb_io_capacity_max







innodb_checksum_algorithm







innodb_read_io_threads







innodb_write_io_threads







1 2 - , . 





.





3. Nginx brotli, pagespeed, proxy_buffering

Nginx , , . Nginx , , , Mail.Ru, . , Nginx (proxy_buffering) (proxy_cache), .





Nginx. - , , , . client_max_body_size, Nginx .





4. PHP-FPM Memcache Apache

PHP-FPM - Nginx. , PHP-FPM. , Nginx + Apache.





Apache . , Apache , . Apache, , .





PHP-FPM unix socket. ? Nginx -, . PHP-FPM. , unix socket – PHP-FPM, .





1. 24 3 ,   5-8 .





2. .





3. - .





4. 30%, , S, : => => => .





5. front-end . :





  • webp;





  • lazyload- ;





  • .





Hicimos que el sitio fuera más rápido y solucionamos problemas de carga sin cambiar el código. La velocidad del sitio afecta a muchos indicadores: desde la facilidad de uso hasta la clasificación del sitio en los resultados de búsqueda, lo que finalmente afecta la conversión.








All Articles