Comment accélérer un site Web de 4 fois en reconfigurant simplement le serveur

Si vous travaillez avec un site qui se développe progressivement - le nombre de produits augmente, le trafic provenant de la publicité - alors tôt ou tard vous devrez passer en mode de fonctionnement haute charge, charges de serveur élevées. Mais que se passe-t-il si votre site ne se développe pas, que le serveur tombe de plus en plus en panne et qu'un blocage des données se produit ? C'est à cette problématique que nous avons été confrontés, en finalisant le site internet d'une boutique en ligne de matériel d'éclairage avec un assortiment de plus de 100 000 produits.





situation initiale

Le projet était situé sur un serveur qui disposait de suffisamment de ressources pour assurer un fonctionnement rapide et fluide du site, même sous des charges très élevées. Cependant, le serveur n'a pas répondu aux actions des utilisateurs ou a répondu très lentement, dès que le trafic du site a augmenté même légèrement. 





Trouver le problème 

Nous avons effectué un audit des paramètres du serveur et du site, en divisant le travail en deux étapes : analyse du back-end et du front-end, et avons constaté une faible vitesse de chargement des pages sur le back-end - environ 80 secondes sur les pages les plus visitées , ce qui a finalement conduit à une diminution significative de la conversion.





Nous avons découvert que le problème principal était un cache et une configuration de base de données mal configurés.





En conséquence, un plan d'action en quatre étapes a été élaboré, ce qui nous a permis d'obtenir de bons résultats. Qu'avons-nous fait?





Décision

Étape 1. Configuration de la base de données

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- ;





  • .





Nous avons rendu le site plus rapide et résolu les problèmes de chargement sans changer le code. La vitesse du site affecte de nombreux indicateurs : de la convivialité au classement du site dans les résultats de recherche, qui affecte finalement la conversion.








All Articles