炊きたてのご飯が食べたい

定時に帰れるっていいね。自宅勤務できるっていいね。子どもと炊きたてのご飯が食べられる。アクトインディでは積極的にエンジニアを募集中です。

Amazon EC2(AWS) t1.microでWordPress運用


wordpress*aws

このサイトはAWSのt1.microで運営しています。2013年1月の月間訪問者数は約10,000。1日の訪問数は500人ほどのサイトです。

さくらのVPSから、AWSに移設を決め、できることなら、毎月のサーバー代を抑えたかったので、一番安いt1.microで運営することに決めました。

ただ、t1.microのメモリは613MBしかありません。多少の不安はありましたが、「まぁ、アクセスも多くないから大丈夫だろう」と思って、AWSに移設をし、サイトを公開したところ、2時間も経たずにサイトが落ちてしまいました。

確認してみると、Apacheは生きていて、mysqlが落ちていました。AWSのt1.microのメモリは613MBなので、どうしてもmysqlがメモリ不足で落ちてしまうようです。

対策はないものかと、色んなサイトを参考にさせてもらい、色々と試したんですが、

  • mysqlへの最大接続本数を制限する「max_connections=10」を指定してもダメ
  • MySQL クエリキャッシュを色々といじってみてもダメ
  • PHPアクセラレータeAcceleratorを導入してもダメ
  • Apacheでmod_deflate, mod_expiresを有効化してもダメ
  • いつもお世話になっているWp Super Cacheを入れてもダメ
●EC2のmicroインスタンスMySQLが落ちる場合 参考link http://lab.flama.co.jp/archives/680

m1.smallに変更すると、軽快に動作します。でも、現在のアクセス数だと、そこまでお金をかけたくなかったので、なんとかt1.microで運営したい。

結局Apacheでの運用を諦め、最終手段として、nginxに変えることにしました。

nginxに変えたところ、何の問題もなく運営できています。Apacheがそれだけメモリを使用していたってことですかね。ただ、スマートフォン対応が簡単にできるwptouchをはじめとする多くのプラグインApache前提で作られているので、WordPressを色々とカスタマイズしている場合は、運用のハードルはかなり上がると思います。

これから、nginx用のプラグインが増えてくると思うので、運営しながら勉強していこうかな、と思います。