Como acelerar um site em 4 vezes simplesmente reconfigurando o servidor

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.








All Articles