ホーム > カテゴリ > サーバー構築・運用・Linux >

PHPの使用メモリを減らす [PHP-FPM]

CentOSで各種サーバー構築(目次)

今回はPHP関連の使用メモリが40.6%になっていたので、PHPを実行するアプリケーションサーバー(PHP-FPM)の設定を変更します。

状況

次のコマンドでCPUやメモリ使用率を確認できます。

このコマンドで確認できるRSSは実メモリ使用量でKB単位となっています。

[内訳]

Ruby on Rails15.69%
Django/Tensorflow(AI)8.2%
MariaDB12.2%
Laravel/CakePHP/PHP40.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-fpm の設定を理解してサイトのパフォーマンスを向上させる
PHP公式によるwww.confの日本語解説





関連記事



公開日:2022年04月11日 最終更新日:2022年04月15日
記事NO:02902