ホームページ >バックエンド開発 >PHPチュートリアル >Web サイトのパフォーマンス向上の鍵: PHP-FPM 最適化実践ガイド

Web サイトのパフォーマンス向上の鍵: PHP-FPM 最適化実践ガイド

王林
王林オリジナル
2023-10-05 09:28:411118ブラウズ

Web サイトのパフォーマンス向上の鍵: PHP-FPM 最適化実践ガイド

Web サイトのパフォーマンス向上の鍵: PHP-FPM 最適化実践ガイド

インターネットの急速な発展に伴い、Web サイトの役割はますます重要になっています。 Web サイト運営者にとって、Web サイトのパフォーマンスを向上させることは、ユーザー エクスペリエンスを向上させるだけでなく、検索エンジンのランキングを向上させるためにも重要です。 PHP-FPM (FastCGI Process Manager) は、PHP 実行のプロセス マネージャーとして、Web サイトのパフォーマンスを向上させる上で重要な役割を果たします。この記事では、具体的なコード例を含む、PHP-FPM 最適化の実践的なガイドを提供します。

1. PHP-FPM のインストールと構成

まず、PHP がサーバーにインストールされていることを確認する必要があります。次のコマンドで確認できます:

php -v

PHP がインストールされていない場合は、次のコマンドを使用してインストールしてください (CentOS を例にします):

yum install php

インストールが完了したら、php.ini ファイルを変更し、PHP-FPM サポートを有効にする必要があります。次の 2 行のコードを見つけて変更します。

cgi.fix_pathinfo=0
; FastCGI dynamic process spawning
; Set to 0 if you're not having permission errors when running PHP as a CGI.
; http://php.net/cgi.fix-pathinfo

コードの 1 行目を次のように変更します。

cgi.fix_pathinfo=1

コードの 2 行目を次のように変更します。

;cgi.fix_pathinfo=0

変更と再起動 変更を有効にするには、PHP-FPM サービスを開始します。

service php-fpm restart

2. PHP-FPM の構成パラメータを調整する

PHP-FPM を最適化する前に、まず PHP-FPM のいくつかの重要なパラメータを理解する必要があります:

  • pm.max_children: プロセスの最大数を指定します。これは、PHP-FPM が作成できる PHP プロセスの最大数です。この値を超えると、新しい接続はキューに入れられます。
  • pm.start_servers: 起動時に作成される PHP プロセスの数を指定します。
  • pm.min_spare_servers: PHP-FPM が維持する必要があるアイドル プロセスの最小数を指定します。
  • pm.max_spare_servers: PHP-FPM が維持する必要があるアイドル プロセスの最大数を指定します。
  • pm.max_requests: 各 PHP プロセスによって処理されるリクエストの最大数を指定します。この値を超えると、プロセスが再起動されます。

サーバー構成と Web サイトのトラフィックに応じて、これらのパラメーターを適切に調整して、PHP-FPM のパフォーマンスを向上させることができます。たとえば、サーバー構成が低い場合は、pm.max_children を 20 などの小さい値に設定できます。 Web サイトへのアクセス数がそれほど多くない場合は、pm.min_spare_servers と pm.max_spare_servers を 5 などの小さい値に設定できます。

これらのパラメータは、php-fpm.conf ファイルを編集することで変更できます:

vi /etc/php-fpm.conf

変更する次のコード行を見つけます:

pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

変更を保存した後、再起動します。変更を有効にするための PHP-FPM サービス。

service php-fpm restart

3. PHP の OPcache 拡張機能を有効にする

OPcache は、PHP バージョン 5.5 以降に導入されたアクセラレータです。コンパイルされた PHP スクリプトをメモリにキャッシュして、繰り返しのコンパイル時間を短縮できます。 OPcache 拡張機能は、次の手順に従って有効にできます:

  1. php.ini ファイルを開きます:
vi /etc/php.ini
  1. 次のコードを見つけます:
;zend_extension = <path_to_opcache.so>
  1. 先行する「;」を削除し、「」を特定の OPcache 拡張パス (通常は /usr/lib64/php/modules/opcache.so) に置き換えます。
  2. 変更を保存した後、PHP-FPM サービスを再起動して OPcache を有効にします。
service php-fpm restart

4. PHP-FPM の Slow Log 機能をオンにする

PHP-FPM の Slow Log 機能は、実行時間が指定したしきい値を超えたリクエストをログ ファイルに記録できます。後で使用するための分析と最適化。次の手順で Slow Log 機能を有効にできます。

  1. php-fpm.conf ファイルを開きます:
vi /etc/php-fpm.conf
  1. 次のコードを見つけます:
;slowlog = /var/log/php-fpm/www-slow.log
;request_slowlog_timeout = 0
  1. 先行する「;」を削除し、「request_slowlog_timeout」を必要なしきい値 (秒単位) に変更します。たとえば、これを 1 に変更すると、実行に 1 秒以上かかるリクエストがログに記録されることになります。
  2. 変更を保存した後、PHP-FPM サービスを再起動して、Slow Log 機能を有効にします。
service php-fpm restart

5. Nginx などのリバース プロキシ サーバーを使用する

Nginx などのリバース プロキシ サーバーを使用すると、静的リソース リクエストを Nginx に転送して処理できるため、PHP-FPM の複雑さが軽減されます。ウェブサイトを読み込み、パフォーマンスを向上させます。

Nginx 構成ファイルでは、次のコードを通じて静的リソースのリクエストを Nginx に転送できます:

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    proxy_pass http://yourdomain.com;
    proxy_set_header Host $host;
}

上記のコードは、jpg、jpeg、png、gif、ico、css、 js 他のサフィックスに対するリクエストは、処理のために http://yourdomain.com に転送されます。

6. キャッシュ メカニズムを使用する

Web サイトのビジネス ロジックでは、キャッシュ メカニズムを使用してデータベース アクセスと動的ページの生成を削減し、Web サイトのパフォーマンスを向上させることができます。 。これは、Redis や Memcached などのキャッシュ テクノロジを使用して実現できます。

次のコード例で Redis キャッシュを使用できます:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$key = 'user_info_' . $user_id;
if ($redis->exists($key)) {
    $user_info = $redis->get($key);
} else {
    $user_info = getUserInfoFromDatabase($user_id);
    $redis->setex($key, 3600, $user_info);
}

上記のコードでは、まずユーザー情報がキャッシュに存在するかどうかを確認します。存在する場合は、キャッシュから直接取得されます。 ; 存在しない場合はデータベースから取得します。 からユーザー情報を取得してキャッシュに保存し、有効期限を 3600 秒に設定します。

概要:

PHP-FPM を最適化することで、Web サイトのパフォーマンスを向上させ、ユーザー エクスペリエンスを向上させることができます。この記事では、PHP-FPM 最適化の実践的なガイドを提供し、参考として具体的なコード例を示します。実際のアプリケーションでは、最高のパフォーマンスを達成するために、特定のニーズに応じて調整および最適化することもできます。

以上がWeb サイトのパフォーマンス向上の鍵: PHP-FPM 最適化実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。