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.