【CentOS7】Apache2.4 PreforkからEventMPMに変更手順
久しぶりの更新!
CentOS streamやらAlmaLinuxなど、CentOSの後継がリリースされている中、いまだにCentOS7使ってます。
既存の環境を移行が大変なのでしばらくは7のままかも。
今回は、ApacheのモジュールPreforkの限界を感じつつあるので、EventMPMについて調べてみました。
わからない部分もありますが(検証中と記載した部分)、都度修正していきます。
モジュールの変更
vi /etc/httpd/conf.modules.d/00-mpm.conf LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #↓ #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #LoadModule mpm_event_module modules/mod_mpm_event.so #↓ LoadModule mpm_event_module modules/mod_mpm_event.so
PHP-FRMのインストール
#PHPのバージョンに合わせる(例ではPHP7.2) yum install --enablerepo=remi-php72 php-fpm #PHP-FPMの起動 systemctl start php-fpm #サービス自動起動 systemctl enable php-fpm
バーチャルホストの設定追加(例:DocumentRoot /var/www/html/)
ProxyPassMatch ^(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 disablereuse=on SetEnv proxy-nokeepalive 1
MPMの設定追加
vi /etc/httpd/conf.d/mpm.conf #↓設定値はサンプルです。 <IfModule mpm_event_module> StartServers 32 ServerLimit 500 ThreadLimit 1000 ThreadsPerChild 1000 MinSpareThreads 100 MaxSpareThreads 1000 MaxRequestWorkers 12000 MaxConnectionsPerChild 500 </Ifmodule>
PHP-FRMの設定
vi /etc/php-fpm.d/www.conf #apache以外で設定していた場合変更(例:sample) user = apache group = apache ↓ user = sample group = sample #子プロセスの最大数を変更(検証中) ;pm.max_children = 50 ↓ pm.max_children = 500 #プロセス再起動値(検証中) ;pm.max_requests = 500 ↓ pm.max_requests = 1000 #memcachedを利用している場合変更 ;php_value[session.save_handler] = files ;php_value[session.save_path] = /var/lib/php/session ↓ php_value[session.save_handler] = memcached php_value[session.save_path] = "「IP:ポート」" #設定反映 service php-fpm reload #設定ファイルにエラーがないか確認 service httpd configtest #Apacheの再起動(ここでEvent MPMに切り替わります) service httpd start
設定確認
#prefork OR Event MPMで動作しているか確認 httpd -V #PHP-FPMのプロセス数 ps aux | grep php-fpm | grep -v grep | awk '{print $6, $10, $11}' #php-fpmのプロセスの件数 ps aux | grep php-fpm | grep -v grep | awk '{print $6, $10, $11}' | wc -l #1プロセス辺りのメモリ使用率 ps aux | grep php-fpm | grep -v grep | grep -v master | awk '{sum+=$6} END {print sum/NR}'