気がついたら運用しているサーバーの一つがメモリ不足になってた。
WEBサービスごときにメモリとか不足しないだろとか思ってたけどどういうこっちゃ。

と調べてる見ると犯人はMySQL。

チューニングとか全然知らないんだけど調べてみる。解決しない。原因不明。

といろいろ探ってたら、ひとつのテーブルがやたら肥大化してた。プログラムミスったようだ。
ただのキャッシュテーブルだったので、えいや!とトランケートしちゃいました^^

そしたら落ち着いた、ような気がする。。。
一時期NoSQL最強だぜ!ってMongoDB流行ってたけど今聞かないね。

個人的に作ってるサービスで、jsonをキャッシュしたいなと思って、mongoDBを導入。
MySQLのtextカラムにjsonぶち込んでやってもいいんだけど、まあ導入。

公式サイトにyumでのインストール方法が丁寧に書いてあった。

http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/

/etc/yum.repos.d/mongodb-org-3.0.repoを作成する
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

で、

yum install mongodb-org
PCにあわせて作っていたら問題が二点でてきた。
1. iphoneで動画が再生されない
2. バックグラウンドで連続再生できない

1. iphoneで動画が再生されない
YoutubeのIFrameAPIを触っていたのですが、iphoneの場合は一度タップして再生しないとloadVideoByIdを叩いても再生されません。

タップした、というよりは、一度は再生したというフラグをもたせて以降はloadVideoByIdを叩くようにしたいと思います。

最初の動画は、queVideoByIdで再生待ち状態で待機させます。
その後、onStateChangeイベントで渡ってくる、dataでstateをみて、再生できた = 1、だったら再生したフラグを立てるようにしました。

2. バックグラウンドで連続再生できない
動画の再生が終わると次の動画をajaxで非同期で取得してloadVideoByIdしてましたが、これだとバックグラウンドで動かないんですよね。。
おそらくバックグラウンドだとhttpリクエストが投げられないないのかな?とか妄想して、最初に動画を全て取得するように修正しました。

動画の数が決まっていればいいんですが、無制限となると難しいですね。。