FPM は FastCGI Process Manager の略称であり、その正式名称から、FastCGI に関連するものであり、FastCGI プロセス マネージャーであることがわかります。 FastCGI はプロトコルとして理解でき、FPM はその PHP での実装です。
FPM の登場により、PHP アプリケーションの分散デプロイメントが可能になり、PHP サーバーと Web サーバーを別のマシンに配置できるようになります。もちろん、FPM というよりも、FastCGI の登場です。当初、FPM は PHP で正式に使用されず、PHP のパッチとしてのみ使用されていました。しかし、PHP5.3.3 バージョン以降、FPM は PHP の一部として正式に PHP にバンドルされています。このようにすると、PHP をコンパイルするときに --enable-fpm オプションを追加するだけで済み、
php-5.6.9]# ./configure –enable-fpm
FpmFpm は、PHP のコンパイル時に --enable-fpm オプションを追加することで fpm を起動できます。また、コンパイル時に --with という 2 つのオプションがあります。 -fpm-user= USER および -with-fpm-group=GROUP は、fpm が属するユーザーおよびユーザー グループを設定するために使用されます。これら 2 つの項目が指定されていない場合、デフォルトのユーザーおよびユーザー グループは「nobody」になります。もちろん、これら 2 つの項目は、fpm の設定ファイル php-fpm.conf でも変更できます (このファイルが配置されているディレクトリは、PHP インストール ディレクトリ /etc/php-fpm.conf です)。
user = nothing
//あなたが所属するユーザー
group = nothing
//あなたが所属するグループ
listen = 127.0 .0.1:9000
//fpm が配置されているサーバーの IP アドレスとリスニング ポート番号、デフォルトは 9000
pm = Dynamic
//プロセスマネージャーの設定方法 子プロセスを管理するために、動的動的管理では、その数の最大値が pm.max_children によって設定され、作成される数は pm.start_servers によって設定されます。 static static Managementはサービス起動時に子プロセスを作成する固定数を設定しますが、ondemandはサービス起動時に子プロセスを作成せず、リクエストがあった場合にのみ子プロセスを作成します。
pm.max_children = 10
//pm が static に設定されている場合、この値は、pm がdynamic または ondemand に設定されている場合に、サービスの開始時に作成される子プロセスの数を表します。この値は、作成される子プロセスの最大数がこの数を超えることができないことを示します。
pm.start_servers = 2
//サービスの開始時に作成される子プロセスを示します (これはスレッド数の代わりに子プロセス)、このオプションは pm が動的に設定されている場合にのみ有効です。また、この値はデフォルトで min_spare_servers + (max_spare_servers – min_spare_servers)/2 に設定されており、この値が 0 に設定されている場合、作成される子プロセスの数も上記の式によって決まります。
pm.min_spare_servers = 1
//アイドル状態のサービスプロセスの最小数が必要です
pm.max_spare_servers = 3
//アイドル状態の最大数サービスプロセスの数
pm.process_idle_timeout = 10s
//プロセスが強制終了されるまでのプロセスのアイドル時間 (秒単位)
Fpm
application
fastcgi サービスを管理する方法を見てみましょう。まず、php インストール ディレクトリ
~]# cd /usr/local に移動します。 /php5
php5]# ./sbin/php-fpm
//fastcgi サービスを有効にすると、サービスは /usr/local/php5/var/ になります。 run/ php-fpm.pid に fastcgi メインプロセス ID があります
php5]# kill –INT `cat /usr/local/php5/var/run/php-fpm.pid`
// fastcgi サービスを閉じます
php5]# kill –USR2 ` cat /usr/local/php5/var/run/php-fpm.pid`
// fastcgi サービスを再起動します
Fpm
使用説明書
fpm の単純な構成では、pm=dynamic および pm.start_servers =2 について説明しました。 fastcgi サービスが有効になっている場合、まず php-fpm.pid
php5]# cat /usr/local/php5/var/run/php-fpm.pid //結果は
32407
php5]# ps x | grep php-fpm //次に、このコマンドを使用してメインプロセスを表示します
32407 ?マスタープロセス (/usr/local/php5/etc/php-fpm.conf)
php5]# ps –ef grep php-fpm //次に、このコマンドを使用してすべてのプロセスを表示します
root 32407 1 0 13:46 ? 00:00:00 php-fpm: マスタープロセス (/usr/local/php5/etc/php-fpm.conf)
nobody 32408 32407 0 13:46 ? 00:00:00 php-fpm: pool www 3 つの情報。最初のプロセスはシステムによって作成されたメインプロセスで、その ID は 32407、親プロセス ID は 1 です。残りの 2 つはそのサブプロセスです。pm.start_servers = 2 で 2 に設定しているため、サービスの開始時に 2 つのサブプロセスが作成されます。これら 2 つの子プロセスのユーザーは誰も (user=nobody)、プロセス ID はそれぞれ 32408 と 32409 です。3 番目の項目は、これら 2 つの子プロセスの親プロセスの ID 32407 です。
もちろん、fpm は少なくとも 1 つの子プロセスを作成します。これは、start_servers が 0 に設定されている場合、上で説明した式に基づいて子プロセスの数を計算するためです。もちろん、min_spare_servers と max_spare_servers の両方を 0 に設定すると、子プロセスの数は 0 になり、その場合サービスは開始できません (これらの設定は、pm が動的に設定されている場合にのみ有効です)。 fpm はリクエストの処理にユーザー none の子プロセスを使用するため、システムによって作成されたメイン プロセス (ID 32407 とユーザー root) はリクエストを処理できません。もちろん、ここでのプロセスの数は、サーバーの実際の状況 (メモリ サイズなど) に基づいて最適化できます。
上記は fpm の構成と使用法を簡単に紹介したもので、目的は fpm の役割を説明することです。