PHP-FPM(PHP FastCGI Process Manager)は、PHPの重要なコンポーネントであり、PHPスクリプトを処理するプロセスを管理するために特別に使用されます。従来のスレッドベースのモデルとは異なり、PHP-FPMはプロセスベースのメソッドを使用してリクエストを処理し、各リクエストには処理用の独立したPHP-FPMプロセスがあります。このモデルは、並行性のパフォーマンスと安定性を改善することができます。
PHP-FPMは、Webサーバー(Nginx、Apacheなど)とは独立して実行され、FastCGIプロトコルを介してWebサーバーと通信できます。構成ファイルに従ってプロセス数を自動的に調整して、システムが異なる負荷条件に対処するのに役立ちます。
PHP-FPM構成ファイルでは、MAX_CHILDRENは非常に重要な選択肢です。 PHP-FPMプロセスの最大数を制限するために使用されます。各PHP-FPMプロセスは、一定量のメモリとCPUリソースを消費するため、MAX_CHILDRENの値を適切に構成することが重要です。
max_childrenの設定が小さすぎる場合、要求の蓄積と応答時間が増加する可能性があります。設定が大きすぎる場合、システムの安定性に影響を与える可能性があり、クラッシュにつながる可能性があり、システムメモリが不十分な場合があります。
max_childrenを調整する前に、最初に、使用可能なメモリやCPUコアの数など、サーバーのハードウェアリソースステータスを理解する必要があります。 TOPやHTOPなどのコマンドラインツールを使用して、リソースの使用を表示できます。
サーバーメモリが8GBで、CPUが4つのコアであると仮定します。
各PHP-FPMプロセスによって消費されるメモリの量は、PHPアプリケーションの複雑さとコードの品質に依存します。各プロセスが約200 MBのメモリを消費すると仮定すると、8GBのメモリを備えたサーバーは40のPHP-FPMプロセスに対応できます。ただし、システムは他のプロセスに一定量のメモリを保持する必要があるため、PHP-FPMプロセスをサポートするために6GBのメモリを使用できます。
CPUコアの数が小さいことを考慮すると、max_childrenは4に設定できます。つまり、サーバーのCPUコアの数です。
max_childrenの値を変更するには、php-fpm構成ファイルを編集する必要があります。一般的に、構成ファイルは/etc/php-fpm.confまたは/etc/php/7.4/fpm/php-fpm.confパスにあります。
構成ファイルでmax_childrenオプションを見つけ、必要に応じてその値を変更します。たとえば
pm.max_children = 4
変更後、構成ファイルを保存し、PHP-FPMサービスを再起動して設定を有効にします。
max_childrenの構成を調整することは、パフォーマンスの最適化の一部にすぎず、将来的には継続的な監視とチューニングが必要です。
TOPやHTOPなどのコマンドラインツール、またはPHP-FPM独自のPHP-FPM-STATUSページを使用して、プロセスステータスを監視できます。これらのツールは、潜在的な問題を発見し、タイムリーに調整するために、現在のPHP-FPMプロセス、メモリ使用量などを表示するのに役立ちます。
PHP-FPMプロセスの数が不十分であり、要求処理が遅いことがわかった場合、MAX_CHILDRENの価値を適切に増やすことができます。システムメモリが不十分な場合は、この値を減らすことを検討できます。実際の負荷の状況に応じて、PM.max_requests、PM.Start_Serversなどの他の構成オプションを調整して、全体的なパフォーマンスを最適化します。
max_childrenを調整する場合は、慎重に検討する必要があります。値が大きすぎると、システムに過度の負荷が発生する可能性があり、値が小さすぎるとリクエストのバックログを引き起こす可能性があります。調整前に詳細なテストと評価をお勧めします。
さらに、サーバーに他の非PHPプロセスがある場合、PHP-FPMのパフォーマンスに影響を与えることを避けるために、リソース消費を考慮する必要があります。
PHP-FPMのMAX_Children構成を適度に調整することにより、システムの安定性とパフォーマンスを効果的に改善できます。サーバーのハードウェアリソースと予想されるリクエストボリュームに基づいてこの値を合理的に設定し、定期的に監視および調整して、システムが常に最適な状態であることを確認します。