PHP-FPM(FastCGI Process Manager)は、WordPressの管理者ページの速度を改善するために重要な役割を果たします。PHP-FPMはPHPリクエストを効率的に処理して、サーバーのパフォーマンスを向上させ、管理者ページが遅くなる問題を解決することができます。以下でPHP-FPMの設定を変更する方法をご案内します。
いつPHP-FPMを使うべきか?
PHP-FPMは下記のような状況で使用を検討する必要があります:
- トラフィックが多いウェブサイト
- 一日に数千件以上の同時リクエストを処理しなければならない高トラフィックサイトでは、PHP-FPMはボトルネックを減らし、応答速度を改善します。
- リソースが制限されたサーバー環境
- PHP-FPMはメモリとCPUリソースを効率的に管理するため、限られたサーバー環境でも性能向上を提供します。
- WordPress 管理者ページが遅いとき
- 管理者ページは一般的なページより多くのPHPリクエストを生成するので、PHP-FPMの最適化で速度を改善することができます。
- PHPリクエストが過負荷を引き起こすとき
- 既存のPHPの設定では、同時要求を十分に処理できず、504 Gateway Timeoutエラーが発生したときにPHP-FPMを適用すると、問題を解決することができます。
PHP-FPMの主な設定説明と推奨値
PHP-FPMの性能を最適化するために重要な設定項目と推奨値を下記のようにまとめました。 各項目は、 WordPress 管理者ページのような動的なウェブサイトの要求処理性能に影響を与えます。
1️⃣ pm.max_children
- 説明:
- 同時に処理できる最大リクエスト数を定義します。
- PHP-FPMが一度に処理できるリクエストの最大値を設定し、これを超えるとリクエストは待機状態になります。
- この値はサーバーのメモリ容量によって決定されます。
- 推奨値:
- 10~50: 小規模のウェブサイト。
- 50~150: 中トラフィックのウェブサイト。
- 150~300: 高トラフィックのウェブサイト。
- (例:RAM 1GBあたり約20個のmax_childrenが可能)
2️⃣ pm.start_servers
- 説明:
- PHP-FPMが起動時に準備するプロセス数です。
- 初期リクエストを処理するために準備された状態で待機するプロセスの数を設定します。
- 設定値が低すぎると、初期リクエスト時の待ち時間が長くなる可能性があります。
- 推奨値:
pm.min_spare_servers と
pm.max_spare_servers の
値の間で設定します。- 例)
pm.min_spare_servers=5で、pm
.
max_spare_servers
=
10の場合、pm.
start_servers=7に
設定。
- 例)
3️️⃣ pm.min_spare_servers
- 説明:
- リクエストを待ってる間、常に維持されなければならない最小プロセス数を定義します。
- この値よりプロセス数が少ない場合、PHP-FPMは新しいプロセスを生成します。
- 推奨値:
- 小規模サイト:2~5
- 高トラフィックサイト:5~10
4️⃣ pm.max_spare_servers
- 説明:
- リクエストを待機するために作成できる最大プロセス数を定義します。
- 設定値を超えるプロセスは削除されます。
- この値が高すぎると、メモリの浪費を引き起こす可能性があります。
- 推奨値:
- 小規模サイト:5~10
- 高トラフィックサイト:10~20
5️️⃣ pm.max_requests
- 説明:
- 各PHP-FPMプロセスが処理できる最大リクエスト数を設定します。
- この値はメモリリークを防止するため、プロセスを周期的に再生成する役割をします。
- 値が低すぎると、頻繁にプロセスを再生成して性能低下が発生する可能性があり、高すぎるとメモリリークで問題が発生する可能性があります。
- 推奨値:
- 500~1000: 安定的なリクエスト処理。
- 高トラフィックのウェブサイトでメモリに問題がなければ、1000~2000まで可能。
6️⃣ pm=dynamic or static
- 説明:
- PHP-FPMのプロセス管理方法:
- dynamic: リクエストの数によってプロセスを動的に増加/減少させる。
- static: 固定された数のプロセスを維持します。
- PHP-FPMのプロセス管理方法:
- 推奨値:
- dynamic: ほとんどのサイトに適しています。
- static: 非常に安定的で固定的なリソース割り当てが必要なサイト。
最終設定例
サーバーのメモリとトラフィック状況に応じて設定を適用した例は下記の通りです:
中程度のトラフィック(RAM 4GB基準)
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 1000
高トラフィック (RAM8GB基準)
pm = dynamic
pm.max_children = 150
pm.start_servers = 20
pm.min_spare_servers = 15
pm.max_spare_servers = 30
pm.max_requests = 2000
PHP-FPM設定変更で管理者ページを最適化する方法
1️⃣ PHP-FPMの設定が必要な理由
- 同時リクエスト処理の向上
- PHP-FPMはマルチプロセスを管理し、WordPressのような動的なウェブサイトのパフォーマンスを大幅に改善します。
- リソース効率の向上
- PHPリクエストを効率的に処理するため、CPUとメモリ使用量が減少します。
- 特に、管理者ページの速度改善
- 管理者ページはより多くのPHPリクエストを生成するので、PHP-FPMの性能最適化が重要です。
2️⃣ cPanelでPHP-FPMの有効化と設定変更
- cPanelにログイン
- ホスティング管理ツールにログインしてPHP設定ページに移動します。
- PHP-FPMを有効にする
- ソフトウェア → MultiPHP Managerを選択。
- WordPressサイトに使用されるドメインに対してPHP-FPMが有効になっていることを確認し、有効になっていない場合は有効化(Enable)ボタンをクリックします。
- PHP-FPMの設定を変更
- ソフトウェア → MultiPHP INI Editorに移動。
- PHP-FPM関連設定を下記のように調整します:
設定の説明:
pm.max_children
: 同時に処理できる最大リクエスト数。(高く設定するほど、より多くの同時リクエストを処理可能)- 推奨値 :
pm.start_servers
: 初期プロセス数。pm.min_spare_servers
: 最小待機プロセス数。pm.max_spare_servers
: 最大待機プロセス数。pm.max_requests
: 1つのプロセスが処理できる最大リクエスト数。(500~1000推奨)
pm = dynamic pm.max_children = 20 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pm.max_requests = 500
3️⃣ PHP-FPM設定ファイルを直接変更する
ホスティング環境がcPanelでない場合、SSHでサーバーに接続して直接PHP-FPM設定ファイルを修正することができます。
- PHP-FPM設定ファイルを開きます:
SSHでサーバーに接続後、PHP-FPM設定ファイルを開きます。 php-fpm設定ファイルはshell接続後、下記のコードを入力します。
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
- 設定修正します:
下記のように主な項目を調整します。
pm = dynamic pm.max_children = 30 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 10 pm.max_requests = 1000
- PHP-FPMを再起動します:
設定変更後、PHP-FPMサービスを再起動します。
sudo systemctl restart php7.x-fpm
4️⃣ 管理者ページの最適化追加作業
PHP-FPM設定変更以外にも、WordPress管理者ページの速度を最適化するには、次の作業を一緒に実行してください:
- Heartbeat API制限
- Heartbeat Controlプラグインをインストールして、管理者ページのAJAXリクエストの頻度を制限します。
- キャッシュプラグインの設定
- WP Rocket、W3 Total Cacheのようなキャッシュプラグインを活用して、管理者ページのパフォーマンスを向上させます。
- データベースの最適化
- WP-Optimizeプラグインを使って古いリビジョン、一時データなどを整理します。
- PHPバージョンのアップグレード
- PHP 8.0以上を使うと性能が大幅に改善されます。
5️⃣ PHP-FPMの最適化結果確認
- サイトのパフォーマンスチェック
- 管理者ページの速度が改善されたか確認します。
- 必要に応じてQuery Monitorプラグインでクエリ処理時間を分析します。
- サーバーリソースの使用量チェック
- cPanelまたはサーバー管理ツールでCPUとメモリ使用量を監視します。
🚀 結論
PHP-FPMの設定を適切に調整すると、WordPressの管理者ページの速度を大幅に改善することができます。さらに、Heartbeat制限、キャッシュの最適化、データベースのクリーンアップなどを並行すると、より大きな効果を見ることができます。
PHP-FPMは、パフォーマンスとリソース管理の両方を改善するPHP実行環境で、特にトラフィックが多いサイトや WordPress 管理者ページの速度の問題を解決するのに役立ちます。正しく設定すると、ウェブサイトのパフォーマンスを大幅に向上させることができ、効率的なプロセス管理を通じて安定したサービスを提供します。
PHP-FPMが提供する機能と設定方法を介して WordPress パフォーマンスの問題を解決することができる具体的な手順に移ります。😊(笑)