気がついたら予選について何も書かないまま本戦を迎えてしまった。
isuconとはiikanjini Speed Up Contestの略で、高速化コンテストです。詳細はリンク先を掘ってもらえるとわかると思います。
うちのチームの予選については
SQL初心者の留年野郎がISUCON予選通過した方法、 チーム学生自治のメンバーとしてカレーを買いに行った話 #ISUCON
あたりを参照してください。
というわけで「チーム学生自治」という名前でISUCONの本戦に出てきました。
チーム名は、こういうの
チーム学生自治のイメージ画像です pic.twitter.com/KqO3I3OWru
— ウイウ (@uiureo) 2015, 10月 31
というわけではなく、
私はチーム系「山科御池」推しだったんだけど、わたしが選んだあみだくじによって「チーム学生自治」に決まりました。
— 友利のな(鴨川水量bot) (@nonamea774) 2015, 10月 31
みたいな感じです(Tweet中のチーム系はチーム名のタイポ)。
結果
結論から言うと、
isucon結果です。 #isucon pic.twitter.com/6uy1sGBfNe
— 友利のな(鴨川水量bot) (@nonamea774) 2015, 10月 31
学生チームは全員再起動テストに失敗し、失格となりました。 結果的には本戦の時間中ずっと寝続けて何もしなければ学生枠優勝して5万円が手に入ったという感じです。 途中で一度再起動テストは行ってそこでは問題なかったのですが、最後の再起動テストは行ってなかった、という感じです。 本戦中は点数的に負けるかなー とは思っていたのですが、Failで失格となるとは思ってなかったので、 :sadpanda:。
とった戦略は、
APIの呼び方とかが5種類しかないのにDBに入ってたので、展開してしまったのとか(私が書いたのですがバグらせてつらかった)、
parallelというgemでAPIリクエストを並列化して呼ぶようにしたこととか、
nginxとunicornのプロセスを増やすとか、
アクセスログを眺めてみたら意外と静的ファイルにもアクセスが来ていたので、nginxに返してもらうこととか、
accept-encodingにgzipが入っていたので、gzip_staticで配信したとか、
ぱっと思いつくのはそのへんです。
使用言語はRubyですが、golangだと初期実装が10倍ぐらい点が高いと聞いてつらい気持ちになった。 tenki APIが遅かったのでどうにかならないかとずっといろいろ見ていたら Last-modifiedヘッダが付いてるということまでは気づいていたのに、 If-modified-sinceを思いつけなかったのは反省点っぽい(Failしたこと以上の反省点はないが)。 RACK_ENVがdevelopmentであったということを聞いた時はなるほどなぁ という感じでした。
以下雑なものです。
ここより上も雑でしたが。
会社のTシャツ着てきたら、 @nonamea774 と被った
— 辛子明太子@イカID: pastak (@pastak) 2015, 10月 31
おはようございます、チーム学生自治から渋谷の最新ファッション事情をお届けします pic.twitter.com/pVOZwnAhVA
— ウイウ (@uiureo) 2015, 10月 31
isucon中に作業用のプリエンプティブVMが殺されないことを祈る。
— 友利のな(鴨川水量bot) (@nonamea774) 2015, 10月 31
最近手元のWindowsマシンで作業することをほとんど諦めて、その都度家のサーバやGCPのプリエンプティブVMやKMCのサーバで作業しています。
今日の作戦として「とにかく高速化する」が挙げられています。
— 友利のな(鴨川水量bot) (@nonamea774) 2015, 10月 31
めっちゃかっこいいプラッチック名刺だ。 pic.twitter.com/KxTQKFV8Vl
— 友利のな(鴨川水量bot) (@nonamea774) 2015, 10月 31
https://t.co/nQXEV4jFIA 名刺の画像なんだけど、この線の部分もちゃんと出ててすごい。
— 友利のな(鴨川水量bot) (@nonamea774) 2015, 10月 31
本戦参加者に配られた名刺なのですが、自分の描いたイラストがいい感じに名刺にされてて感動した。 別のイベントに持って行ってもいいぐらいかもしれない。
懇親会では食べきれないほどの寿司とピザとビールが出た。
次も出るぞ!!