Wordpressを動かしてるこのサーバが重くてどうしようもなくなってきたので、メモリを節約するようチューニングしてみました。試してみたことをメモ。
サーバ環境:
- メモリ256MBの軟弱VPSです。
- Ubuntu 9.04
かなり適当にやっつけているので、参考にならん!って方は僕が参考にしたこちらなんかをどうぞ:
Optimize your Apache VPS for WordPress | Jestro
Apacheのモジュールを減らす
…と思ったけど無駄なものは最初から何もなかった。
php.ini
影響しそうなのはmemory_limit。 PHPがApacheと組んで消費するメモリはmemory_limit*httpd.confのMaxClientsとのことなので、これを適当に減らしてみる。あと、memory_limitを変更したらpost_max_sizeがそれを超えないように設定すべきとのことだけど、十分下回ってるようなので今は据え置き。
Before:
memory_limit = 32M post_max_size = 8M
After:
memory_limit = 16M post_max_size = 8M
httpd.conf
さっき触れたMaxClients。Ubuntu上のApache2+PHPはデフォルトでmpm_preforkを使ってるようなので、その関連設定を変更。値は適当です。
Before:
<ifmodule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</ifmodule>
After:
<ifmodule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 4
MaxClients 50
MaxRequestsPerChild 0
</ifmodule>
本当はサーバのメモリが256MBとケチくさいのでMaxClients 50は高すぎるんだろうけども。
次はタイムアウト。短く切ってやる。ついでにKeepAliveのタイムアウトも短く。ここも適当…。
Before:
Timeout 300 KeepAliveTimeout 15
After:
Timeout 30 KeepAliveTimeout 10
結果
だいぶ適当に数字を減らしただけなんだけども、十分使い物になるレベルにまで軽くなった。面倒だから特に検証もしてないけど、memory_limitとStartServersとMaxSpareServersが一番効いてるような気がする。ブログのアクセス数は大したことないから、たぶんこれでしばらく持つんじゃないだろうか。
2 Comments
これ困ってた!助かります。
ちなみに、僕はswapファイルをつくることで対処していました。
lighttpdを使ってもfast-cgiでごっそり取られるので、webサーバはapache2(prefork)のままで。
うちの場合Swap領域は十分あったけどスラッシングがひどかった。