PHPの使用メモリを減らす [PHP-FPM]
今回はPHP関連の使用メモリが40.6%になっていたので、PHPを実行するアプリケーションサーバー(PHP-FPM)の設定を変更します。
状況
次のコマンドでCPUやメモリ使用率を確認できます。
ps aux
このコマンドで確認できるRSSは実メモリ使用量でKB単位となっています。
[内訳]
Ruby on Rails | 15.69% |
---|---|
Django/Tensorflow(AI) | 8.2% |
MariaDB | 12.2% |
Laravel/CakePHP/PHP | 40.6% |
Ruby on RailsやDjangoのアプリケーションサーバーのワーカープロセス(プロセス)は1つにしていたのですが、PHP-FPMの設定は「初期設定のまま」でしたので「自動」で子プロセスを最大50個まで起動する設定になっていました。
PHP関連のみを確認したい場合は次のコマンドを使用します。
ps aux | grep php
USER PID %CPU %MEM RSS COMMAND root 1001 0.0 1.1 21496 php-fpm: master process (/etc/php-fpm.conf) ??? 1002 0.0 3.7 71212 php-fpm: pool www ??? 1003 0.1 3.8 72304 php-fpm: pool www ??? 1004 0.0 3.8 72480 php-fpm: pool www ??? 1005 0.0 0.0 980 grep --color=auto php
※必要な部分のみ抜粋。
PHP-FPMの初期設定
// 子プロセスを動的に増やす pm = dynamic // 子プロセスの最大数(pm =staticの場合は固定の子プロセス数) pm.max_children = 50 // 起動時に作成される子プロセスの数 pm.start_servers= 5 // アイドル状態のサーバープロセス数の最小値 pm.min_spare_servers = 5
設定の変更
(例)子プロセスの数を3つに固定するようにします。
sudo vi /etc/php-fpm.d/www.conf
[www.conf]
// 子プロセス数を固定にする pm = static // プロセスの数を3とする pm.max_children = 3
PHP-FPMの再起動
sudo systemctl restart php-fpm
参考サイト
次の参考サイトによるとCPU(2コア)ならばプロセス2つ。3コアは3つのプロセスが良いようです。詳細は参考サイトを見た方が早いかも知れません。
<追記>
私の場合は2だとタイムアウトしてしまったので固定値で5にしています。アクセス数や処理内容によっても異なりそうです。
php-fpm の設定を理解してサイトのパフォーマンスを向上させる
PHP公式によるwww.confの日本語解説
スポンサーリンク
関連記事
公開日:2022年04月11日 最終更新日:2022年04月15日
記事NO:02902