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

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アプリケーションのレスポンスとスケーラビリティが向上します。適切な設定を継続的にモニタリングし、運用環境に最適なチューニングを施してください。