RHELでのPHP-FPMパフォーマンス最適化 – Webサーバーの設定

PHP-FPMは、高性能なPHPアプリケーションを提供するための重要なコンポーネントです。RHEL環境でのPHP-FPMの設定とパフォーマンス最適化について解説します。
PHP-FPMとは
PHP-FPM(FastCGI Process Manager)は、PHPを動作させるための高速プロセスマネージャーです。リクエストごとにPHPプロセスを作成する従来の方式よりも効率的です。
必要なパッケージのインストール
PHP-FPMと関連パッケージをインストールします。
sudo yum install php php-fpm
PHP-FPMの設定ファイルを確認
設定ファイルは通常以下の場所にあります。
/etc/php-fpm.conf
/etc/php-fpm.d/www.conf
特にwww.conf
でパフォーマンスに影響するパラメータを設定します。
プロセスマネージャーの設定
動作モードを適切に設定します。
- static: 固定数のプロセスを維持
- dynamic: リクエストに応じてプロセス数を調整
www.conf
で以下のように設定します。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
OPcacheの導入
PHPのスクリプトをキャッシュして高速化します。
sudo yum install php-opcache
/etc/php.d/10-opcache.ini
で以下のように設定します。
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
ファイルディスクリプタの最大値を設定
大量のリクエストを処理するためにファイルディスクリプタの制限を引き上げます。
sudo vi /etc/security/limits.conf
soft nofile 65535
hard nofile 65535
Nginxとの連携設定
NginxをWebサーバーとして使用する場合、PHP-FPMと連携する設定を行います。
server {
listen 80;
server_name example.com;
root /var/www/html;
<pre><code>location / {
index index.php index.html;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
ログの管理
PHP-FPMのログを設定してトラブルシューティングを行います。
error_log = /var/log/php-fpm/error.log
log_level = notice
セッション管理の最適化
セッションデータの保存場所を高速なストレージやメモリ上に変更します。
session.save_handler = files
session.save_path = "/var/lib/php/session"
ファイルキャッシュの設定
ファイルキャッシュを使用することでディスクI/Oを削減します。
realpath_cache_size=4096k
realpath_cache_ttl=600
スワップメモリの利用を最小化
十分な物理メモリを確保し、スワップの使用を抑えるよう設定します。
sudo sysctl -w vm.swappiness=10
PHPバージョンの確認と更新
最新の安定バージョンを利用することで、パフォーマンスとセキュリティが向上します。
php -v
sudo yum update php
パフォーマンスのモニタリング
ツールを使用してPHP-FPMのパフォーマンスをモニタリングします。
sudo yum install htop
htop
負荷試験の実施
Apache BenchmarkやSiegeを使用してWebサーバーの負荷テストを実施します。
ab -n 1000 -c 10 http://example.com/
sudo yum install siege
siege -c 50 -r 10 http://example.com/
まとめ
PHP-FPMの設定と最適化により、Webアプリケーションのレスポンスとスケーラビリティが向上します。適切な設定を継続的にモニタリングし、運用環境に最適なチューニングを施してください。
-
前の記事
Vue 3のスクリプトセットアップを利用してプロジェクトの初期化を簡素化 2025.05.13
-
次の記事
Railsのエラー『TypeError: can’t quote Reflection::MacroReflection』の解決方法 2025.05.14
コメントを書く