搭載メモリの少ない環境でWordPressを運用していると、ちょくちょくメモリが底をついてしまうので、ApacheとPHPとMySQLの設定を調整。
環境は、さくらインターネットのVPS。
512MBメモリのVPSだとこのくらいか。
ちょっとやり過ぎかもしれないので様子を見つつ適宜調整で。
Inno-DBは使っていないので多少でもメモリ節約。
[mysqld] #下記の一行を追加 skip-innodb
memory_limit = 32M post_max_size = 8M
32MBもあれば多分問題ないので32MBにします。デフォルトは128MB?だったかな?32〜64の間くらいで問題ないはず
詳しくは下記を熟読した方がいいに決まってますが・・・
この MPM は非常に自律的なので、この MPM の設定ディレクティブを 調整する必要はほとんどないでしょう。もっとも重要なことは、 MaxClients が、予想される同時リクエスト数を十分扱えるぐらいは大きいけれども、 全プロセスに十分な物理メモリが確実に行き渡る程度には小さい値にする、 ということです。
とりあえず、設定値を極々小さいものにしてから順に様子を見ていく方向でやってみます。
<IfModule prefork.c>
StartServers 2
MinSpareServers 2
MaxSpareServers 4
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 50
</IfModule>
Timeout 30
KeepAlive On
KeepAliveTimeout 10
特にStartServers/MaxClientsあたりはアクセス数と相談しながら調整したほうが良さそう。
あっMaxClients = ServerLimit にしておいてくださいね。
なんか大幅に節約しすぎてる気もしますが・・・まあ、大量にアクセスのある羨ましいBlogを運営している方は512MBのVPSなんて使わないでしょうし、このBlogのアクセス数くらいならこんなモンです。

アクセスが止むと、すぐにメモリが解放されて余裕が生まれるようになった。
同時起動プロセス数やKeepAliveのタイムアウトなどは、htopの画面を見ながら適宜調整していくといいですね。今回はちょっとやり過ぎた(アクセスが多くなってきてもメモリを使い切るところまで増えない)かもしれませんが、ここから少しずつ設定を緩和していって、いい感じの設定値を見つけていくことにします。
ちなみに上にも画面のスクリーンショットがありますがtopコマンドの拡張版htopはカラフル&色々便利なので愛用しています。
登録されているリポジトリにもよるかもしれませんが
sudo yum install htop
でインストールできるのでみなさんにもオススメしておきます!
一週間ほど運用してみて、最終的に落ち着いたのが下記の設定
<IfModule prefork.c> StartServers 2 MinSpareServers 2 MaxSpareServers 6 ServerLimit 70 MaxClients 70 MaxRequestsPerChild 50 </IfModule>
memory_limit=64M
アクセス数、負荷に合わせて今後も調整が必要ですが、とりあえずこんな感じです。
匿名2011年6月8日 at 3:50 AM
memory_limit 絡みでエラーが出る場合は40M~64MB位の間で調整の必要がありそう。メモリを多く使う場合32Mでは画面が真っ白になったりPHPエラーが出たりする可能性あります。
さくらVPS+WordPress運用:apache設定をチューニングして余らせたメモリをMySQLのquery_cacheに充てる | ログメモチップス2012年4月4日 at 11:09 PM
[...] 先日公開した、さくらインターネットのVPSでメモリを節約しながらWordPressを運用する設定値メモというエントリで、メモリ512MBのVPS環境でWordPressを動かす際のApache&PHP周りのミニマム [...]