サーバーを再構成するだけで Web サイトを 4 倍高速化する方法

徐々に成長しているサイト (製品の数が増え、広告からのトラフィック) で作業している場合は、遅かれ早かれ高負荷操作モード、高サーバー負荷に切り替える必要があります。しかし、サイトが成長しておらず、サーバーの障害が増加し、データ ブロックが発生した場合はどうでしょうか? 100,000以上の製品を取り揃えた照明器具のオンラインストアのWebサイトを完成させるときに、私たちが直面したのはこの問題です。





初期状態

プロジェクトは、負荷が非常に高い場合でも、サイトの迅速かつスムーズな運用を確保するのに十分なリソースを備えたサーバー上に配置されていました。ただし、サイトのトラフィックがわずかでも増加すると、サーバーはユーザーのアクションに応答しないか、応答が非常に遅くなりました。 





問題の発見 

サーバーとサイトの設定の監査を実施し、作業を 2 段階に分けて実施しました: バックエンドとフロントエンドの分析で、バックエンドでのページの読み込み速度が遅いことがわかりました - 最も訪問されたページで約 80 秒、最終的にコンバージョンの大幅な減少につながりました。





主な問題は、キャッシュとデータベースの構成の誤りであることがわかりました。





その結果、4段階のアクションプランが策定され、好結果を得ることができました。私たちは何をしましたか?





決定

ステップ 1. データベースのセットアップ

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





  • .





コードを変更せずにサイトを高速化し、読み込みの問題を修正しました。サイトの速度は、ユーザーの使いやすさから検索結果でのサイトのランキングまで、多くの指標に影響を与え、最終的にはコンバージョンに影響します。








All Articles