ISUCON8本戦に参加してきた

先日ISUCON8本戦に参加してきました.

kstmというチームで,学生枠での出場でした. チームメンバーは僕とugwiskobの3人.

昨年も同じメンバーで"人間にはチーム名を決めるのが難しい"というチーム名で参加していたのですが,このときは予選敗退となりました. なので今年は念願のISUCON本戦出場となったわけです.

さて,そんなISUCON8での結果はというと...

残念ながら結果を残すことはできませんでしたが,とっても楽しいISUCONでした!


タイムライン

10:11

実装言語は予選と同じでGo言語を選択. 何もいじらずベンチマークにかけ,スコアは 493

10:55

ログ集計のための設定を行う. 僕はmysql周り,ugwisはnginxにkataribe導入,kobはnetdata.

ログが取れるようになったことを確認してもう一回ベンチ.

11:25

ログをもとに実装を眺めてるとLIMIT 1が抜けてるクエリ発見. ここをなおすとスコアが大きく上がって4,557

ここから先,ボトルネックの箇所がわかってもどうなおすか悩む...

13:52

シェア機能を使えばアクティブユーザーが伸びてスコアが上がるのでは,ということになり res["enable_share"] = trueにしてスコア計測. しかし負荷に耐えきれずfail.

ログインに5回連続失敗したとき403を返すようにすればアクティブユーザーの増加にある程度効いてくると考え,実装に取り掛かる. kobにredisサーバーを導入してもらってアプリの実装を行う.

15:53

403を返せるようになったけどそれだけだとやっぱり負荷が大きくfailしてしまう.

ugwisのアイデアでシェア機能の有効化をランダムにしてアクティブユーザーの増加を制御するとスコアが上がって7,724

17:08

アプリケーションサーバを複数台構成にするべく各自設定をがんばる. ugwisはリバースプロキシを設定,kobは各サーバーのインフラ整備.

そして今回最高スコアの10,081を記録.

その後,/initializeでredisがクリアされないのでは,という問題が出たりして急いで修正なんかを行っていたところで時間切れになって終了.

経験や知識,実力の不足を実感したな...

ただあれこれ作業してる間は楽しかったし,モチベーションも上がった気がするのでほんと本戦参加できてよかったなって感じです.

来年も参加できたらいいなー