本格SEもすなる、技術ブログといふものを、駄目SEもしてみむとて、するなり

サバフェスに参加したよ!後篇

そういえば後編を書き忘れていたので、年を越える前に書いておきます。
GETの対応までは書いたから、その次か。

POST対策は?

多重度が上がってくるとMySQLの処理時間が大きかったので、MySQLをどうにかしようと思いました。そこでMySQLをスケールアウトさせる戦略を考えました。
ぱっと思いついたのが、以下の2案でした。

  • Federated
  • Spider
Federated

Federatedのリファレンスを見ていると「リモートデータベースに何か変更があると破壊される事があります。」と書いていたので、Insertはスケールアウトができなそうだったので、ボツ。

Spider

Spiderはイケそうな気がしたのですが、パーティションを定義しなければならないので「Engineのみ。Engine以外の変更が必要なEngineは利用不可」というレギュレーションに違反する?ので諦めました。

結局、ストレージエンジンで解決できなそうだったので、全サーバにMySQLを入れ、各WordPressからローカルのMySQLへアクセスさせるようにしました。そして非同期で1台のマシンへ集約するようにしてみました。
f:id:maroon1st:20131231123837j:plain
こんな感じです。

作りは、かなり適当です。非同期でデータを集約するのはShellを作成してループで回しただけだし(Supervisorとか使ってない)。

結果

全体としては、8位でした。POSTは比較的アクセスを稼げました。GETはDSRの有無でアクセスが倍くらい違っていたので、まだまだという感じでした。

もう一歩チューニング、、、

DSRはやった事が無かったと、クラウド環境で使えると思っていなかったので、もう少し時間が有ってもGETは稼げなかったと思います。
POSTの方は、WordPressMySQLの間にMySQL Proxyを噛ませて、mysql-proxy-cacheを使えばアクセスを稼げたかなと思います。
内容としては、完敗という感じでした。

終わりに

今回は初開催と言う事もあってか、レギュレーションがブレたり、変更可能な個所がこなれていなかった印象が有ります。しかし、2回目の開催は決まった様なので、次回もぜひ参加したいと思います。
次は、もう少し実用的なチューニングをしようと思います。