Se você estiver trabalhando com um site que está crescendo gradualmente - o número de produtos aumenta, o tráfego de publicidade - então, mais cedo ou mais tarde, você terá que mudar para o modo de operação de alta carga, altas cargas de servidor. Mas e se o seu site não estiver crescendo, o servidor falhar cada vez mais e ocorrer o bloqueio de dados? É com este problema que nos deparamos, ao finalizar o site de uma loja online de equipamentos de iluminação com um sortimento de mais de 100.000 produtos.
situação inicial
O projeto estava localizado em um servidor que possuía recursos suficientes para garantir um funcionamento rápido e tranquilo do site, mesmo sob cargas muito elevadas. No entanto, o servidor não respondeu às ações do usuário ou respondeu muito lentamente, assim que o tráfego do site aumentou, mesmo que ligeiramente.
Encontrando o problema
Realizamos uma auditoria das configurações do servidor e do site, dividindo o trabalho em duas etapas: análise do back-end e front-end, e encontramos uma baixa velocidade de carregamento da página no back-end - cerca de 80 segundos nas páginas mais visitadas , o que acabou levando a uma diminuição significativa na conversão.
Descobrimos que o principal problema era o cache e a configuração do banco de dados mal configurados.
Com isso, foi traçado um plano de ação em quatro etapas, o que nos ajudou a alcançar bons resultados. O que nos fizemos?
Decisão
Etapa 1. Configuração do banco de dados
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- ;
.
Tornamos o site mais rápido e corrigimos problemas de carregamento sem alterar o código. A velocidade do site afeta muitos indicadores: desde a facilidade de uso até a classificação do site nos resultados da pesquisa, o que acaba afetando a conversão.