こんにちは!システム事業部の村田です。
先日開催されたISUCON8予選に、他の社員2名とチーム「ポテチはのり塩派」で3人で初参加しました!
結果としては予選敗退で、再起動試験でfailという悲しい結果・・・でした
最終的なベンチスコアは6894でした
役割としては 私:インフラ 他2人:コード という形で進めました。
そこまでの作業をまとめようと思います。
9:00〜
競技開始 全員でSSHして中の構成を確認して、参考実装をRubyへ切り替えました。 ソースをgitに移したり、ソースを読んだりしていたのですが、ここでhttpサーバーにh2oが使われていることが判明。
まずはh2oを調べるところから始まりました。。。
その間に、残りの2人はコードの解析を進めてくれていました。
10:00〜
コード組2人は、get_events、get_eventがやばいということでそことの戦いを始めていました。 私は、3台与えられていたのでそれを多重化構成にしようとh2oでの複数台構成のやり方を調べていましたが全然見つからず・・・
13:00〜
全然進展せず。。。。
ここで、h2oで進めるのを諦めて、nginxに変えることにしました。 が、2台目、3台目へのアクセスが通らず、firewallなどの設定をずっと調べていました・・・・
15:00〜
コードを触っていた2人が、get_eventを少し改善して、一気にスコアが7643に!
16:00〜
ここで、繋がらなかった原因が起動コマンドでipをバインドしていなかったことが原因でした・・・初歩的すぎる・・・ 無事、2台構成にできたのですが、なぜかスコアが下がる・・・
ここで、諦めて最初の1台で戦うことにしました。
17:00〜
インフラを捨てて私もコードに参戦しました。 POST:/api/userを改善しようと、get_eventの戻りを利用している箇所を着手。 17:50までベンチ通らなかったら諦めるつもりで直していたのですが、結局通りませんでした。
進捗・・・・0・・・・
18:00〜
競技終了
何もできずに終わって非常に悔しかったです・・・
反省点
最初から、nginxで決め打ちで設定を用意しておくべきだったなぁと。。。 あとは、練習でISUCON7の予選問題を解いていたのですが、問題の方向性が全然違ったという感想です。
今回の問題、get_eventを何とかすることに全てがかかっていて、そこに早めにリソースを放り込むべきだった。 効果がないと思ったらガンガン変えていかないとだめですね。本当に時間が足りない・・・
感想
運営の方、素晴らしい問題をありがとうございます。初参加でしたが、非常に楽しかったです! 自分の実力不足をものすごく痛感させられて、勉強しないといけないなと。。。
来年、ぜひリベンジしたいです!!!