ホームページ >バックエンド開発 >PHPチュートリアル >Nginx で使用される php-fpm プロセス管理方法と最適化
追記: 少し前に php-fpm を構成したときに、php-fpm には 2 つのプロセス管理メソッドがあることに偶然気づきました。 Apacheと同様にプロセス数も設定により動的と静的に分けることができます。
php-fpm には現在、php-5.2.x のバージョンと php-5.3.x のバージョンに対応する 2 つのメイン ブランチがあります。 5.2.x バージョンでは、php-fpm.conf は xml 形式を使用しますが、新しい 5.3.x バージョンでは、php.ini と同じ構成スタイルになります。
5.2.x バージョンでは、php-fpm.conf
は、プロセス管理に 2 つのスタイルがあると主張しています。1 つは静的 (静的)、もう 1 つは Apache スタイルに似ています (apache 風の) 。
関連する学習の推奨事項: php プログラミング (ビデオ)
コードは次のとおりです:
Process manager settings <value name=”pm”> Sets style of controling worker process count. Valid values are 'static' and ‘apache-like' <value name=”style”>static</value>
Follow ドキュメントによると、pm スタイルが apache-like
を採用している場合、起動されるプロセスの数は StartServers で指定した数と同じになるはずです。ただし、何度か試してみると、実際に PM のスタイルを Apache に似たものに設定しても効果がないことがわかります。つまり、ここではApacheらしい実装はされていません。
ただし、php-fpm をサポートする最新の 5.3.x では、Apache スタイルのプロセス管理が実装されています。
コードは次のとおりです。
; Choose how the process manager will control the number of child processes. ; Possible Values: ; static - a fixed number (pm.max_children) of child processes; ; dynamic - the number of child processes are set dynamically based on the ; following directives: ; pm.max_children - the maximum number of children that can ; be alive at the same time. ; pm.start_servers - the number of children created on startup. ; pm.min_spare_servers - the minimum number of children in 'idle' ; state (waiting to process). If the number ; of 'idle' processes is less than this ; number then some children will be created. ; pm.max_spare_servers - the maximum number of children in 'idle' ; state (waiting to process). If the number ; of 'idle' processes is greater than this ; number then some children will be killed. ; Note: This value is mandatory. ;pm = dynamic pm = static
上の段落からわかるように、プロセス管理には静的と動的の 2 つのスタイルがあります。プロセス管理は実際には以前のバージョンと同じですが、Apache 風のものが動的に変更され、理解しやすくなりました。
static に設定すると、php-fpm プロセスの数は常に pm.max_children で指定された数になり、増減しません。
動的に設定すると、php-fpm プロセスの数は動的になります。pm.start_servers で指定された数から始まります。リクエストが増えると、アイドル プロセスの数が少なくならないように自動的に増加します。 pm.min_spare_servers
よりもプロセス数が多い場合は、冗長プロセスの数が pm.max_spare_servers を超えないようにするために、それに応じてクリーンアップされます。
これら 2 つの異なるプロセス管理方法は、サーバーの実際のニーズに応じて調整できます。
まず、これに関連するいくつかのパラメータについて説明します。それらは、pm
、pm.max_children
、pm.start_servers
、pm です。 .min_spare_servers
および pm.max_spare_servers
。
pm は使用する方法を示します。選択できる値は 2 つあり、静的 (静的) または動的 (動的) です。古いバージョンでは、dynamic は apache-like
と呼ばれていました。このための設定ファイルの記述に注意してください。
次の 4 つのパラメータの意味は次のとおりです。
コードは次のとおりです。
pm.max_children:静态方式下开启的php-fpm进程数量。 pm.start_servers:动态方式下的起始php-fpm进程数量。 pm.min_spare_servers:动态方式下的最小php-fpm进程数量。 pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
dm が static に設定されている場合、この場合、実際には##pm.max_childrenpm.max_children##このパラメータのみが有効になります。システムは、設定された数の php-fpm プロセスを開始します。
dm が動的に設定されている場合、pm.max_children パラメーターは無効になり、次の 3 つのパラメーターが有効になります。システムは、php-fpm の実行が開始されると
pm.start_servers php-fpm プロセスを開始し、システムのニーズに応じて pm.min_spare_servers と pm.max_spare_servers の間で php-fpm プロセスの数を動的に調整します。 。
大きなメモリ (8G 以上など) を搭載したサーバーの場合、静的な max_children を指定する方が実際にはより適切です。これにより、追加のプロセス数制御が必要なくなり、効率が向上します。 php-fpm プロセスを頻繁に切り替えると遅延が発生するため、メモリが十分に大きい場合は静的効果が向上します。
pm.min_spare_servers については、サーバーの負荷に応じて 5 ~ 10 の間で設定することをお勧めします。
関連する推奨事項:
以上がNginx で使用される php-fpm プロセス管理方法と最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。