php-fpm を使用して高パフォーマンスのチューニングを行う方法

王林
リリース: 2023-07-08 11:32:02
オリジナル
1301 人が閲覧しました

php-fpm を使用して高パフォーマンスのチューニングを行う方法

PHP は、Web アプリケーションや動的 Web サイトの開発に広く使用されている、非常に人気のあるサーバーサイド スクリプト言語です。ただし、トラフィックが増加すると、PHP アプリケーションのパフォーマンスが低下する可能性があります。この問題を解決するには、php-fpm (FastCGI Process Manager) を使用して高性能チューニングを行うことができます。この記事では、php-fpm を使用して PHP アプリケーションのパフォーマンスを向上させる方法とコード例を紹介します。

1. php-fpm のインストールと設定

まず、php-fpm をインストールする必要があります。次のコマンドを使用して、Linux システムに php-fpm をインストールできます:

sudo apt-get install php-fpm
ログイン後にコピー

インストールが完了したら、いくつかの構成を実行する必要があります。 php-fpm の設定ファイルを開きます。このファイルは、/etc/php/7.4/fpm/pool.d/www.conf にあります。構成ファイルでは、特定のニーズに応じて調整できます。

  1. プロセス プール構成を調整する

プロセス プールは php-fpm プロセスの数を制御し、実際の状況に応じて調整できます。以下にいくつかの構成例を示します。

pm = dynamic
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
ログイン後にコピー

上記の構成では、動的プロセス プール (動的) を使用し、子プロセスの最大数 (pm.max_children) を 10 に設定し、初期の子プロセスの数を 10 に設定します。開始された子プロセス (pm .start_servers) は 4、アイドル プロセスの最小数 (pm.min_spare_servers) は 2、アイドル プロセスの最大数 (pm.max_spare_servers) は 6 です。

  1. プロセス管理方法の最適化

php-fpm は、実際のニーズに応じて選択できるさまざまなプロセス管理方法をサポートしています。以下に、構成例をいくつか示します。

pm = ondemand
pm.process_idle_timeout = 10s
pm.max_requests = 500
ログイン後にコピー

上記の構成では、オンデマンド管理方法 (ondemand) を使用し、プロセス アイドル タイムアウト (pm.process_idle_timeout) を 10 秒に設定し、最大数を設定しました。リクエスト数 (pm.max_requests) は 500 です。

2. PHP コードの最適化

php-fpm の構成を調整することに加えて、PHP コードを最適化してパフォーマンスをさらに向上させることもできます。

  1. キャッシュの合理的な使用

PHP は、OPcache、APC、Memcached などのさまざまなキャッシュ メカニズムを提供します。これらのキャッシュ メカニズムを適切に使用すると、スクリプトの実行時間を大幅に短縮できます。

以下は OPcache を使用するためのサンプル コードです:

<?php
$filename = 'somefile.php';
if (apc_exists($filename)) {
    include apc_fetch($filename);
} else {
    ob_start();
    include $filename;
    $content = ob_get_contents();
    ob_end_clean();
    apc_store($filename, $content);
    echo $content;
}
?>
ログイン後にコピー
  1. データベースへの繰り返し接続を避ける

PHP アプリケーションでは、データベース接続は非常にリソースです。操作を消費するため、データベースへの繰り返し接続を避けるように努める必要があります。

次は、シングルトン モードを使用してデータベース接続を管理するためのサンプル コードです:

<?php
class Database {
    private static $instance;
    private $connection;

    private function __construct() {
        $this->connection = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    }

    public static function getInstance() {
        if (!self::$instance) {
            self::$instance = new Database();
        }
        return self::$instance;
    }

    // ...
}

$db = Database::getInstance();

// 使用$db进行数据库操作
?>
ログイン後にコピー

3. モニタリングとデバッグ

パフォーマンス チューニングに php-fpm を使用した後、次のことも行います。最適化の結果を保証するには、監視とデバッグが必要です。

  1. php-fpm ステータス ページの使用

php-fpm には、ブラウザからアクセスして php-fpm の実行ステータスとパフォーマンスを表示できるステータス ページが用意されています。索引。

次のコマンドを使用して、php-fpm ステータス ページを有効にできます:

sudo nano /etc/php/7.4/fpm/pool.d/www.conf
ログイン後にコピー

構成ファイル内で次の行を見つけて、コメントを解除します:

;pm.status_path = /status
ログイン後にコピー

構成ファイルを保存します。

sudo service php-fpm restart
ログイン後にコピー
ログイン後にコピー

これで、http://yourdomain.com/status にアクセスして、php-fpm のステータス ページを表示できます。

  1. パフォーマンス デバッグに xdebug を使用する

xdebug は、パフォーマンスの問題のデバッグと分析に使用できる強力な PHP デバッガーです。

まず、xdebug をインストールする必要があります。次のコマンドを使用して、Linux システムに xdebug をインストールできます:

sudo apt-get install php-xdebug
ログイン後にコピー

インストールが完了したら、いくつかの構成を実行する必要があります。 php.ini ファイルを開きます。このファイルは、/etc/php/7.4/cli/php.ini および /etc/php/7.4/fpm/php.ini にあります。ファイルの最後に次の内容を追加します:

[xdebug]
zend_extension=/usr/lib/php/20190902/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
ログイン後にコピー

構成ファイルを保存し、php-fpm を再起動します:

sudo service php-fpm restart
ログイン後にコピー
ログイン後にコピー

これで、デバッガー ソフトウェア (PhpStorm、Eclipse など) を使用できるようになります。 .) php-fpm に接続し、デバッグとパフォーマンス分析を実行します。

結論

php-fpm の構成と PHP コードを最適化することで、PHP アプリケーションのパフォーマンスを向上させることができます。プロセス プール構成の適切な調整、プロセス管理方法の最適化、キャッシュの使用、データベース接続の繰り返しの回避などの手法は、PHP アプリケーションの応答速度と同時処理能力を向上させるのに役立ちます。同時に、監視およびデバッグ ツールを通じて、パフォーマンスの問題を適時に発見して解決し、全体的なユーザー エクスペリエンスを向上させることができます。この記事が、php-fpm を使用した高パフォーマンスのチューニングに役立つことを願っています。

以上がphp-fpm を使用して高パフォーマンスのチューニングを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート