ISUCON5予選

例年どおり、 @f440 とチームを組み、優秀な若者 @corrupt952 を加えて挑戦しました。

準備

などの準備を一ヶ月くらい前から始めていました。

当日

お題が、mixiクローンのSNSとのことで、

  • @yoppiblog、@corrupt952はアプリの調査
  • @f440はインフラ整備、アクセスログやslow queryの解析

と役割を決めて走り始めます。 1時間ほど立って、調査と解析結果から方針を決めます。

  • MySQLが圧倒的に重たいのでここをなんとかしないと先にすすめない
  • 初期データ量が2GB弱と結構ボリュームがあるのでオンメモリ実装は厳しそう

という判断からRubyの参考実装をもとに正攻法で行くことに決めました。

1時間ほど経過...

アプリ全体を見渡すと、足あとはアプリと切り離すことが簡単そう、ロジックもRedisのSorted Setを使うだけで管理できると当たりを付けられたので Redisを使い始めようとしたのですが、indexを適切に効かせたSQLだけでも処理が重たくないと判断したので、Redisをここで投入はしませんでした。

4時間ほど経過...

indexページのSQLに苦戦、 あなたの友だちの〜 あたりをむりやり1SQLで処理させようと頑張ったのが敗因でした。 ここで3、4時間近く費やすことになります。 JOINすると、 commentbody を含めるととてもクエリが重たくなるので、そこは無理せず where inであとから取ってくることで高速に処理できるなぁと

残り1時間...

トップページも改善できずにただ時間だけが過ぎて行き、最終スコアが2000点弱という悲惨な結果でした。

反省点

毎回反省していることで、ひとつのことにこだわり過ぎないというのがありますが、今回もそれでした。 メンバーとあまり連携がとれなかった、というのもあります。 しかし、なんだかんだと今年もISUCONを楽しめました。運営の方々、ありがとうございました。

使ったツールなど