さくらのVPS、ApacheとWordPressの軽量化で安定稼働が見えてきた

Apache,さくらのVPS

KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド

本日も「さくらのVPS」にUbuntuでLAMP環境を構築し、その上でWordPressを動かすオハナシです。

色々と工夫を重ねた結果、「さくらVPS」のメモリ512M環境でも、1日1万PV近いトラフィックを捌けるようになってきました。

load-day20101029

memory-day20101029

上記は直近24時間のロードアベレージとメモリ使用量です。ほとんどの時間でロードアベレージ1.0以下、メモリスワップ無しで動作するようになりました。

自分へのメモ書きの意味も込めて、今回行ったApacheとWordPressの軽量化手法を紹介します。

軽量化で工夫したところ

主なポイントは3つあります。

  1. WordPress最適化プラグイン「W3 Total Cache」(W3TC)の導入
  2. 画像ファイルを別サーバへ移動
  3. apache2.confによるApacheの調整

以下、各手法の詳細説明です。

W3 Total Cacheの導入

WordPress最適化プラグイン「W3 Total Cache」(W3TC)の導入により、WordPress本体の高速化、またHTML表示の軽量化を行いました。

W3TCによるデータベースキャッシュとオブジェクトキャッシュの有効化は、ビックリするほど効果がありました。導入後はロードアベレージの平均がグッと下がっています。

同プラグインによるコード最適化(Minify)も効果があると思います。サーバのアクセスログを観察して分かったけど、リクエストの多くは.jsと.css の呼び出しなんだよね。

ソコを最適化すれば、得られる効果も大きいハズです。

画像ファイルを別サーバへ移動

ブログのロゴ画像や各種アイコンを別サーバに移動しました。これにより hide10.com へのアクセスを減らし、Apacheの負荷を軽減しました。

実際にやった作業はこんな感じ。

  1. ログを解析して呼び出しの多い画像ファイルを割り出す
  2. 該当画像を flickrにアップロード
  3. WordPressテンプレートを書き換えて、flickrの画像を参照するように変更

ロゴ画像の移転は特に大きな効果がありました。考えてみれば、一日1万回近い呼び出しを他所に回せたんだから、1万リクエスト削減したワケよね。

apache2.confによるApacheの調整

apache2.confを編集してApacheの動作を調整し、省メモリ環境でも安定稼働するようにしました。

ポリシーは「遅くても良いから安定稼働」です。

具体的には、KeepAlive onだけど早め早めに切断、子プロセス少な目の許容クライアント数少な目で省メモリを目指しました。

現在の “/etc/apache2/apache2.conf" における変更点はこんな感じです。

MaxKeepAliveRequests 50
KeepAliveTimeout 5

<ifmodule mpm_prefork_module>
    StartServers         7
    MinSpareServers      7
    MaxSpareServers      7
    MaxClients           40
    MaxRequestsPerChild  4000
</ifmodule>

Apacheのチューニングに関しては、別記事「さくらのVPS、引き続きApacheチューニング」も参照ください。

まとめ

以上3点の変更により、「さくらVPS」のメモリ512M環境でも、1日1万PV近いトラフィックを捌けるようになってきました。

「さくらのVPS」は、KVMによる仮想化とは言え、月額980円で「俺様サーバ」が持てるワケで、これは中々に魅力的な環境かも知れません。

小・中規模のブログを設置するのも良いですし、Webアプリの実験場としても活躍しそうです。

気軽に「ちょっと遊んでみる」のも楽しいと思いますよ ;-)