目次

PHP-FPMの設定(パフォーマンス対策)



設定ファイル

/etc/php-fpm.d/www.conf (RHEL/CentOS)
/etc/php/7.4/fpm/pool.d/www.conf (Ubuntu20.04)


設定例

UNIX ドメインソケットでリッスンさせる設定例

Webサーバーとphp-fpmを実行するのが同じマシンであれば、UNIXドメインソケットを使ったほうが処理が速い

[www]
listen = /var/run/php-fpm/php-fpm-www.sock

user = www              #プロセスの実行ユーザー
group = www             #プロセスの実行グループ
listen.owner = nginx      #ソケットのオーナー(Webサーバがソケットに対して読み書き可能にする)
listen.group = nginx      #ソケットのグループ
listen.mode = 0660        #ソケットのパーミッション

pm = static
pm.max_children = 2
pm.max_requests = 1500

リクエストを待ち受けるポートでリッスンさせる設定例

[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1

user = nginx
group = nginx

pm = static
pm.max_children = 2
pm.max_requests = 1500


PHP-FPMのパフォーマンス関連の設定

staticがオススメです。

プロセス数を固定で起動させておく方法(pm = static)

プロセスの起動に伴うオーバーヘッドがない。

## 2coreの設定例
pm = static
pm.max_children = 2           ##同時に起動するプロセスの最大数
pm.max_requests = 1500           ## プロセスを再起動する処理リクエスト数
設定項目 説明
pm.max_children 同時に起動するプロセスの最大数
設定例:CPUコア数
pm.max_requests プロセスを再起動する処理リクエスト数
多くのリクエストを処理すると、プロセスで使用するメモリがどんどん増大していくことがあり、
これを防ぐために、一定数リクエストを処理したプロセスを自動で再起動させることができます。


プロセスをダイナミックに変動させる設定(pm = dynamic)

同時接続数が増え、プロセス数が足りなくなった時だけ、設定した範囲でプロセスが追加します。

## 2coreの設定例
pm = dynamic
pm.max_children = 2           ##同時に起動するプロセスの最大数
pm.start_servers = 8            ##親プロセスの開始時に起動する子プロセスの数
pm.min_spare_servers = 4        ##アイドル状態のプロセス最小起動数
pm.max_spare_servers = 8        ##アイドル状態のプロセス最大起動数
pm.max_requests = 1500           ##プロセスを再起動する処理リクエスト数
設定項目 説明
pm.max_children staticを参照
pm.max_requests staticを参照
pm.start_servers 親プロセスの開始時に起動する子プロセスの数
コア数×4
pm.min_spare_servers アイドル状態のプロセス最小起動数
リクエストの処理を待機しているプロセスを、最低限いくつ起動しておくかという設定
コア数×2
pm.max_spare_servers アイドル状態のプロセス最大起動数
リクエストの処理を待機しているプロセスを、最大でいくつ起動しておくかという設定
コア数×4


参考


関連ページ