128MB / vSwap 256MB最適化まとめ

128MB / vSwap:256MBなサーバーの最適化に関して、一旦ここでまとめておきたいと思う。
本来、OPcacheなしでは、最適ではないと思うが、OPcache + APCu + PHP 5.5な環境で動作させると、予想を上回り、快適な環境となった。BudgetVMは、ホストサーバーの出来が比較的良いこともあり、最低ラインのプラン構成ではあるが、まずまずの体感スピードが得られた。

【php.ini】
memory_limit = 16M
【apcu.ini】
apc.enable_cli=1
apc.shm_size=8M
apc.ttl=3600
apc.gc_ttl=1800

【opcache.ini】
opcache.memory_consumption=64
opcache.interned_strings_buffer=8
opcache.revalidate_freq=5
opcache.fast_shutdown=1
【Apache httpd.conf】
Timeout 15
KeepAlive on
MaxKeepAliveRequests 10
KeepAliveTimeout 2
<IfModule prefork.c>
  StartServers 1
  MinSpareServers 1
  MaxSpareServers 1
  ServerLimit 25
  MaxClients 25
  MaxRequestsPerChild 128
</IfModule>

一方、OPcacheを使っているのだから、WordPressの最適化を行なっていないかと言うとNOなのだが、もう少しメモリー構成に余裕を持たせれば、WordPressのCacheを大幅にカットしても、そこそこのスピードがでるのではないだろうか。

現在、WordPress上で導入しているCacheは以下のような感じにした。

  • Head Cleaner
  • WP Super Cache
  • Optimize DB

この他、WP-Cron系のPluginを停止。DB CacheはLocal構成のMySQLなのでむしろない方が速いと判断し適用から外した。
また、パーマリンクは、数字ベースであるよりは、もっと固定的な名前ベースにしたほうが、僅かながら速度が向上する。

とりあえず、現在、同一サーバー上で動作させているので、このような設定を行えば、当サイト程度のスピードにはなると考えて良い。

比較的ポイントとなったのは、MaxRequestsPerChild 128の設定で、この設定をしておくと、メモリー開放までの時間を稼ぐことが出来、連続した運用でも、概ね70MB程度のメモリー占有量で動作している。
以下の結果は、Weekdayの約5日を連続して動作させた場合の現在値である。

# free -m
             total       used       free     shared    buffers     cached
Mem:           128        106         21          0          0         29
-/+ buffers/cache:         77         50
Swap:          256         24        231
# 

最大値で128MBを超えているために、24MBほどのvSwapを消費しているが、メインのメモリー消費は、77MB程度に収まっている。この状態で、Apacheの再起動を行うと、OPcacheを含め、フラッシュされるので、初期専有メモリーは約50MB程度に推移する。