チーム「かにかま」として、会社のインフラ同好会3人で出場した。
結果は大敗。
多分1700点ぐらいだったと思う。(上位は2万点ぐらい)
反省はたくさんあるけど、一つだけあげるなら
「まず落ち着け!!!」
「まず落ち着け!!!」
おそらく最初に設定されていた扉すら開くことができず、 あわあわしてたら終わった。
おちつけ、今やるのはそこじゃない
僕のやったことあまり覚えてないけど、 インスタンスタイプ間違えたり、ディスクサイズ間違えたりで、初期データふっ飛ばしたりでインスタンスを4回作るはめになった。
僕が一番時間をかけたのがあしあとのredis化(Time.now.to_i
でSorted Setにする)実装だった。
思い返すと全ユーザーのあしあとランキングになってたし、そもそもredisのconfすら書いてなくてredisが動いていたのかすらあやしい。
最終的に/initializeでデータをredisにロードしているからか重すぎてrevertするはめになった。
そもそも、あしあとは大して問題になってなくて、そのまえにrootのN+1を何とかしないと話になってなかった。
つまりはなにもできなかった。。。
復習
翌日、さっそく同じイメージで復習だ!と思って、mysqlのlogはどこで出せばいいんだろうと思ってmy.cnfをいじってたけど、 いやもうこれめんどくさいでしょと、sqlの本数が知りたいだけだと、 そう思ってたら雑なモンキーパッチを思いついて、どうしてこの発想が出なかったと自分を戒めるためにgemにした。
全部で30行もないけど……。
これでrootにアクセスしてSQLをのぞくと、まあ圧倒的に友達かどうか調べるクエリーがあって(1000個くらい)、
「最初に自分の友だち全部取ってメモリにのせればいいじゃん」とおもいついて、
rootの処理をis_friend?
を使わないように数行書き換えると、
ものの数分で総SQL数が1100 -> 80くらいに減って、「こんなこともできずに終わったのか……。」という絶望感だけが残った。。。
落ち着き、経験値、実装能力、すべてが足りなさ過ぎることなど、 本当に反省の多い、また楽しい初ISUCONでした。
世の中の広さが知れて、非常に良い経験になったと思います。運営の皆様に感謝。
次回への反省として、精神を鍛えるために滝にでも打たれようかな……。