PHP FPM設定

3873 ワード

php-fpmは現在、主に2つの分岐があり、それぞれphp-5.2に対応している.xのバージョンとphp-5.3.xのバージョン.5.2.xのバージョンではphp-fpm.confはxml形式を使用していますが、新しい5.3.ではxバージョンではphp.iniのような配置スタイルです.
5.2.xバージョンではphp-fpm.confではプロセス管理には2つのスタイルがあり、1つは静的(static)であり、1つはapacheスタイル(apache-like)に似ている.  Process manager settings

Sets style of controling worker process count.
Valid values are ’static’ and ‘apache-like’
static
ドキュメントの説明に従って、pmのstyleがapache-likeを使用している場合、起動するプロセスの数はStartServerが指定したものと同じである必要があります.しかし、数回の試みを経て、実際にはここでpmのstyleをapache-likeに構成しても何の役にも立たないことが分かった.すなわち,ここでのapache−likeは実現されていない.
ただし、最新の5.3.xのセットphp-fpmでは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

上記の段落から分かるように、プロセスの管理にはstaticとdynamicの2つのスタイルがあります.以前のバージョンのプロセス管理と同じですが、apache-likeをdynamicに変更するだけで、理解しやすいです.
staticに設定とphp-fpmプロセス数は最初から最後までpmである.max_childrenが指定した数は、増加または減少しません.dynamicに設定と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は,static(静的)またはdynamic(動的)の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_childrenというパラメータが有効になります.設定数のphp-fpmプロセスが開きます.dmがdynamicに設定場合pm.max_childrenパラメータが無効になり、後の3つのパラメータが有効になります.php-fpmの運転開始時にpmが起動する.start_servers個のphp-fpmプロセスは、その後、システムの需要に応じてpmで動的に行われる.min_spare_serversとpm.max_spare_servers間でphp-fpmプロセス数を調整します.
では、私たちのサーバでは、どのような実行方法を選択すればよいのでしょうか.実際、Apacheと同様に、実行されているPHPプログラムは、実行が完了すると、メモリ漏洩の問題が多かれ少なかれ発生します.これも、php-fpmプロセスが1つのphp-fpmプロセスで3 M程度のメモリしか消費されず、しばらく実行すると20-30 Mに上昇する理由です.
メモリの大きいサーバ(例えば8 G以上)の場合、静的max_を指定します.childrenは、追加のプロセス数の制御を必要とせず、効率を向上させるため、実際にはより適切である.頻繁にphp-fpmをスイッチするプロセスもヒステリシスがあるため、メモリが十分に大きい場合は静的にすると効果的です.数量もメモリ/30 Mによって得ることができて、例えば8 GBのメモリは100に設定することができて、php-fpmの消費するメモリは2 G-3 Gの様子に制御することができます.メモリが1 Gなど少し小さい場合、静的なプロセスの数を指定すると、サーバの安定性が向上します.これによりphp-fpmは十分なメモリしか取得できず、少ないメモリを他のアプリケーションに割り当てて使用することができ、システムの動作をよりスムーズにすることができます.
小さなメモリのサーバにとって、例えば256 MメモリのVPSは、1つの20 Mのメモリ量で計算しても、10個のphp-cgiプロセスで200 Mメモリが消費され、システムのクラッシュは正常であるはずです.そのため、php-fpmプロセスの数をできるだけ制御し、他のアプリケーションが消費するメモリをほぼ明確にした後、静的な数を指定すると、システムがより安定します.あるいはダイナミック方式を使用すると、ダイナミック方式は余分なプロセスを終了し、メモリを回収して解放することができるので、メモリの少ないサーバやVPSで使用することをお勧めします.具体的な最大数はメモリ/20 Mによって得られる.例えば512 MのVPSはpmを提案する.max_spare_serversは20に設定されています.pmについてはmin_spare_serversでは,サーバの負荷状況に応じて設定することを推奨し,比較的適切な値は5~10の間である.
 
変換元:http://blog.163.com/zyf_win/blog/static/12206289220111131451959/