nginxのパフォーマンスと互角になる?Apacheをworkerでチューニングする

WEBシステム開発

標準のapacheのpreforkはプロセスで動作するのに対して、nginxと同じスレッドで動作するworkerでは

結局同じ程度のパフォーマンスになるのかな?


実際に自分の目で確かめるために、Apacheをworkerで動作するように挑戦してみました。


phpをmod_phpなどで動作させている場合は、メモリーリークなど動作が不安定になると

いろいろなページで紹介されています。

Apacheをpreforkからworkerに変更するのは、CentOSの場合コメントを外すだけの簡単設定です。


vi /etc/sysconfig/httpd

※コメントを外す
HTTPD=/usr/sbin/httpd.worker

※apacheの再起動
service httpd restart

※動作確認
apachectl -V | grep 'Server MPM'


workerのメリットとしてのメモリー使用量が減った?

後は、mod_phpの動作が不安定になるのを抑える対策として

mod_fastcgiを導入すれば良いと思います。

Apacheのバージョンが2.4系(2.3以上?)の場合は、proxy設定でphp-fpmとの連携ができそうですね。


mod_fastcgiのインストール


yum install mod_fastcgi --enablerepo=rpmforge


mod_fastcgiの設定


mkdir /path/htdocs/fcgi-bin
cp /usr/bin/php-cgi /path/htdocs/fcgi-bin
chown -R apache: /path/htdocs/fcgi-bin
chmod -R 755 /path/htdocs/fcgi-bin


この利用方法はあまり好きでは無いんですよね。PHPのバージョンアップ時の保守性が低下するので。

面倒な設定を省略したい場合は、mod_fastcgiを導入しなくても

workerに設定した時点で、対応されていますが(libphp5-zts.so)・・・



LoadModule php5_module modules/libphp5.so


LoadModule php5_module modules/libphp5-zts.so


関連記事