サバフェスに参加したよ!後篇
そういえば後編を書き忘れていたので、年を越える前に書いておきます。
GETの対応までは書いたから、その次か。
POST対策は?
多重度が上がってくるとMySQLの処理時間が大きかったので、MySQLをどうにかしようと思いました。そこでMySQLをスケールアウトさせる戦略を考えました。
ぱっと思いついたのが、以下の2案でした。
- Federated
- Spider
Federated
Federatedのリファレンスを見ていると「リモートデータベースに何か変更があると破壊される事があります。」と書いていたので、Insertはスケールアウトができなそうだったので、ボツ。
Spider
Spiderはイケそうな気がしたのですが、パーティションを定義しなければならないので「Engineのみ。Engine以外の変更が必要なEngineは利用不可」というレギュレーションに違反する?ので諦めました。
結局、ストレージエンジンで解決できなそうだったので、全サーバにMySQLを入れ、各WordPressからローカルのMySQLへアクセスさせるようにしました。そして非同期で1台のマシンへ集約するようにしてみました。
こんな感じです。
作りは、かなり適当です。非同期でデータを集約するのはShellを作成してループで回しただけだし(Supervisorとか使ってない)。
結果
全体としては、8位でした。POSTは比較的アクセスを稼げました。GETはDSRの有無でアクセスが倍くらい違っていたので、まだまだという感じでした。
もう一歩チューニング、、、
DSRはやった事が無かったと、クラウド環境で使えると思っていなかったので、もう少し時間が有ってもGETは稼げなかったと思います。
POSTの方は、WordPressとMySQLの間にMySQL Proxyを噛ませて、mysql-proxy-cacheを使えばアクセスを稼げたかなと思います。
内容としては、完敗という感じでした。
終わりに
今回は初開催と言う事もあってか、レギュレーションがブレたり、変更可能な個所がこなれていなかった印象が有ります。しかし、2回目の開催は決まった様なので、次回もぜひ参加したいと思います。
次は、もう少し実用的なチューニングをしようと思います。