vi /etc/php-fpm.d/www.conf
/etc/php-fpm.d
ディレクトリにある
www.conf
というファイルを
vi
で編集して php-fpm
の設定を変更する
主に以下の項目がphp-fpmのパフォーマンスに影響する
php-fpmのプロセスを最大でいくつまで起動するか
たくさん起動しすぎるとメモリーを消費してスワップが発生するので遅くなる
php-fpmのサービスを起動した時点でいくつのプロセスを起動させるか
サイトへのアクセスがなくてもアイドル状態のプロセスを起動して待機しておくことで
サイトへのアクセスが発生してからプロセスを起動するよりも早く処理ができる
ただし、待機するアイドルプロセスの数だけメモリーの消費量が多くなる
最低でいくつのプロセスをアイドル状態で待機させておくか
基本的には pm.start_servers と同じ値にする
最大でいくつのプロセスをアイドル状態で待機させておくか
サイトへのアクセスが同時に複数発生するとプロセスがいくつも立ち上がる
処理が終わったらそのプロセスは起動したままでアイドル状態に移行する
このとき、起動したままだとメモリーを消費するのでアイドル状態のプロセスがたくさんある場合は
pm.max_spare_servers で指定した数以下になるようにアイドルプロセスが自動的に終了される
プロセスを再起動するタイミングをプロセスの実行回数で指定
php-fpmのプロセスは処理を実行するたびにメモリー使用量が増えていく
「500回処理を実行したら自動的にプロセスを終了」みたいな設定をすることでメモリーリークを防ぐ
pm.max_children = 100 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 5 pm.max_requests = 500
pm.start_servers = 5
の指定により、php-fpmのサービスを起動した時点で5個のプロセスを待機させる
pm.min_spare_servers = 5
と pm.max_spare_servers = 5
の設定により
サイトへのアクセスがないときでも常時5個のプロセスを待機しておく
pm.max_children = 100
の設定により
サイトに複数のアクセスがあった場合はphp-fpmのプロセスを追加するけど、最大で100個まで
常時5個は起動しておく=起動しっぱなしの5個のプロセスはメモリーの消費量が増加していく
pm.max_requests = 500
の指定により、500回処理を実行したプロセスは終了する
終了するけど、pm.min_spare_servers = 5
の指定により、まっさらなプロセスがまた起動する=プロセス単位で再起動したみたいになる
その結果、結局アイドルプロセスは5個に保たれる
systemctl restart php-fpm
設定を変更した後は、サービスを再起動しないと設定が反映しないので注意