去年ISUCON3予選に参加していた id:cnosuke と id:rkmathii のチームが一人欠けたので、 そこに初出場の僕が入り「railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。」というチーム名でISUCON4予選に出場しました。1日目の学生枠4位でした。
戦略
去年の本戦の結果とか見ているととにかくFAILするチームが多くて、FAILしなければ良い線行くと考えていました。提出用のインスタンスと各自の開発用インスタンスを立ち上げ、提出用は絶対FAILしない状態を保つようにしました。NewRelicのmost time consumingが一番高いactionを、時間のかかっている行から順に潰すという方針で臨みました。
僕がやったこと
rkmathiの記事もどうぞ。
時間 | score | やったこと |
---|---|---|
10:00 | 1411 | newrelicいれた。デプロイとベンチを手元から走らせるスクリプト書いた。 |
11:00 | 1469 | redisインストールした。なんかデプロイツールを使いやすくするのに時間を使った。 |
12:00 | 1638 | redisを使ったフラグメントキャッシュをいれた。いろいろキャッシュしてみたがスコアが変わらない。 |
13:00 | 1620 | loginで特に遅い2つのメソッドをキャッシュするようにした。 間違えて /report にinizializerを書き始めた。 |
14:00 | 1664 | この辺でやっとデプロイツールが満足な感じになりいじるのをやめた。重いメソッドをフラグメントキャッシュにいれた。 |
15:00 | FAIL | rack-lineprofを入れ忘れていたのに気付き今更入れた。なぜかベンチが通らなくなっていることに気づき、問題を探し始めた。 |
16:00 | FAIL | 全員でrevertとかcheckoutしてデプロイしてベンチを繰り返した |
17:00 | FAIL | 原因のプルリが見つかり修正したらチェッカーを通り突然まともな点数になった。再起動確認を繰り返し、動くことを確認しまくった。 |
要約すると、
- 最初の4時間はデプロイ環境やミドルウェアの整備とフラグメントキャッシュの準備をした
- 1時間は初期化の際に全部キャッシュに載せとこうとするも勘違いにより失敗
- 残り3時間はFAILと戦っていた
1日目に参加したため、最終的に使われるスコアはまだわかりません。
v2配布後何度か試しましたが、インスタンスガチャでかなり大きく揺れたので結果が出るまで秘密で…
反省点
見るからにひどくて、言い訳はいろいろあるんですが、反省点は以下の通りです
- チーム内での役割はDevなのにOpsに時間を使いすぎた
- チームで練習してないことを本番でやるべきではなかった
- ベンチはフィードバックが遅いのでブラウザでレスポンスタイムを見てチューニングするべき
- レギュレーションとベンチの結果はよく読むべき
感想
実際参加してみると上位陣がいかにすごい人達かわかりました。競技中はずっと精神が極限状態にあり、すごく刺激的な1日でした。
技術系コンテストの中ではISUCONは僕の興味のど真ん中にある競技で、参加できて非常によかったです。この大会に参加させてくれたチームメンバーと、非常に大変な運営をこなされ大会を支えてくださっている運営チームの皆さんにはとても感謝しています。お疲れ様でした。