今回はphp-fpmに関して。会社のサーバー(このブログが載っているサーバー)がこれ使ってて、メモリをやたら消費しており、設定を見直す必要があったので、リサーチ。
php-fpmとは?
fastcgiの実装です。
チューニング関連
php-fpmをいじるには当然設定ファイルの情報が必要になってきます。
/etc/php-fpm.d/www.conf を編集します。(本来は /etc/php-fpm.conf ですが、これはいじらずにサブの設定ファイルであるwww.confをいじります。)
パフォーマンスに関しては下記のパラメータが有効になります。
いっぱいあるけど私がとりあえず理解できた情報に関して。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#staticとdynamicがあります。 #staticは決まったプロセス数をdynamicはプロセス数を動的に決めます。 pm = dynamic #最大の子プロセス数です。 pm.max_children = 10 #起動時の子プロセス数です。 pm.start_servers = 4 #アイドル時の最小稼働プロセス数 pm.min_spare_servers = 2 #アイドル時の最大稼働プロセス数 pm.max_spare_servers = 6 #再起動するまでに実行されるプロせス数 pm.max_requests = 500 |
PHP以外のファイルを動かしたいとき
またphp-fpmというぐらいですから当然phpを動かすものですが、htmlやcss,javascriptファイルを動かすこともできます。非推奨かもしれませんが・・・
その場合は下記の設定をいじります。
1 2 3 4 5 6 7 8 |
; Limits the extensions of the main script FPM will allow to parse. This can ; prevent configuration mistakes on the web server side. You should only limit ; FPM to .php extensions to prevent malicious users to use other extensions to ; exectute php code. ; Note: set an empty value to allow all extensions. ; Default Value: .php ;security.limit_extensions = .php .php3 .php4 .php5 security.limit_extensions = .php .html .css .js |
おそらくはApacheでいうところのAddHandlerに近いのではないかと思います。
サーバー関連はわかんこと多いな・・・(汗)
参考リンク
PHP-FPMに環境変数を渡す
php-fpmについては一番詳しい。
VirtualBoxで作るCentOS+nginxで.htmlでもPHPが動くようにしてついでにUNIXソケットに変えてみる
security.limit_extensionsに関して
[…] php-fpm内でphp以外のファイルをパースできるようにしておく http://skill-up-engineering.com/?p=1416 […]
[…] php-fpmについて […]
[…] この仕組みを通してnginxはPHPを処理しています。phpを直接処理するのはphp-fpmになることが多いでしょう。 php-fpmについて […]