ServersMan@VPS のApacheパフォーマンスチューニングを実施しました。Apacheに限った話ではないでしょうが、チューニングは、適切に行うことで性能が大きく改善されることがあります。Apacheが遅くて弱っている方!是非ご一読いただければと思います。(2014/04/10作成)
Unsplash / Pixabay
0.バージョン情報
$ /usr/sbin/httpd -v Server version: Apache/2.2.3 Server built: Apr 3 2014 19:55:54
1.不要コンフィグの排除
$ pwd /etc/httpd/conf.d $ sudo mv swtune.conf swtune.conf.20140410 ←※コレ $ sudo mv proxy_ajp.conf proxy_ajp.conf.20140410 $ sudo mv welcome.conf welcome.conf.20140410
【解説】
Apache本体「httpd.conf」で「MPM」を設定変更しても「※swtune.conf」が有効である限り設定が一向に反映されません。トラブルのもとなので読み込まないようにします。
2.prefork MPMの見直し
0)prefork MPM デフォルト設定
StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000
1)prefork MPM チューニング(1回目)
StartServers 5 MinSpareServers 3 MaxSpareServers 5 ServerLimit 80 MaxClients 80 MaxRequestsPerChild 4000
2)prefork MPM チューニング(2回目)
StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 50
3)prefork MPM チューニング(3回目)
StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 1000
【解説】
MPM (Multi Processing Module) を解説している色々なサイトを参考にさせていただきましたが、ズバリこれでという「黄金比」ようなものはないようです。私はなんとなく好きな数字が並んでいる上記にしました。
3.KeepAliveの見直し
MaxKeepAliveRequests 100 ↓ MaxKeepAliveRequests 1000 KeepAliveTimeout 5 ↓ KeepAliveTimeout 15
【解説】
もともと KeepAliveは「On」でしたが、MaxKeepAliveRequests と KeepAliveTimeout を多く・長くすることで、Apacheが生まれ変わりました。事実、KeepAliveのチューニングが一番効果ありました。
4.設定反映
$ sudo /etc/init.d/httpd configtest Syntax OK $ sudo /etc/init.d/httpd graceful
以上