徐々に成長しているサイト (製品の数が増え、広告からのトラフィック) で作業している場合は、遅かれ早かれ高負荷操作モード、高サーバー負荷に切り替える必要があります。しかし、サイトが成長しておらず、サーバーの障害が増加し、データ ブロックが発生した場合はどうでしょうか? 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- ;
.
コードを変更せずにサイトを高速化し、読み込みの問題を修正しました。サイトの速度は、ユーザーの使いやすさから検索結果でのサイトのランキングまで、多くの指標に影響を与え、最終的にはコンバージョンに影響します。