いわマン備忘録

備忘録とちょっとした設定メモや小ネタをUPしたいと思っております。

Apacheに関するメモ

参考:http://blog.matsumoto-r.jp/?p=2996

凄くお調べになってて本当に参考になりました。自分もApache2.2系で何とかパフォーマンスを上げたいことがあって調べていたことがありまして、そのメモです。

2.2系だとprefork MPMとかKeepAliveをいじることがあると思いますが、PHPを使ったWebアプリケーションだとそもそも「prefork MPM」でしかコントロールできなかったり、結局KeepAliveは使わないと厳しかったり(KeepAliveの時間調整も含む)という状況でした。

Nginxを使ってベンチを取ったら、単純なページではスゲー早い。。。ただ、CakePHPだとそこまで早くなかったり(チューニングにもよるだろうけど…)、.htaccess使えないとかそれはそれで問題ありでした。もちろん、Nginxにも.htaccessに類似した機能はあるようなんですが、なかなかApache育ちなので慣れておりません。

あとはApacheはどうしてもメモリが食われるので、prefork MPMの値の調整もバランスが難しい。サーバ1台構成だと特に。他のミドルウェアとの兼ね合いもあって、ちょっと苦労しました。Web+DB構成だと色々と融通も利くのですが。

主に、MySQLPHPApacheのバランスが上手く取れないと、メモリリーク突入みたいな感じになりました。

・変更前

<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000

・変更後

<IfModule prefork.c>
StartServers 15
MinSpareServers 10
MaxSpareServers 20
ServerLimit 300
MaxClients 300
MaxRequestsPerChild 4000
</IfModule>

結局、色々いじくった結果、このような値に落ち着きました。MEM32GBの環境です。