ISUCON8 予選に出場して予選突破した
チーム「最大の敵は時差」で出場して、全体17位、各日上位3チームを除いた上位10チームの中に入り予選を突破した。 チームメンバーの1名がアメリカに留学中であり、更に日本のメンバーも毎朝7時出勤(学生なのに)という状況で、「全員タイムゾーンが違うじゃん!」という事でこのチーム名となった。
やったこと
私はインフラを担当していて、ほぼ基本的なチューニングをした後はプロファイラをガシガシ回したりと継続的に行うことをやった。つまり何もしていないという事になる……。
以下の部分はスクリプト化されていて、開始1発目で全サーバに流し込んだ。
- 公開鍵の設置
- プロファイラのインストール
- matsuu/kataribe
- major/MySQLTuner-perl
- pt-query-digest
- 今回は重たいクエリが多すぎてアプリ側で直しまくっていたのであまり使えなかった
- Kernelパラメータの一部チューニング
- Mackerelのインストール
- 今回から入れた
- DBの負荷が支配的すぎたので入れたけどほぼ見なかった
とにかくMySQLのCPU負荷が高いのが分かったのでこれを解決し続けていた。
Slackログからサルベージした私がやったこと時系列
残りはひたすらベンチマーク結果(プロファイラの出力とか)を共有していたようだ。マジで何もやってないな。
あとはアプリのコードを見ながら議論してたり、ピザ頼んだり、ガチャをやったりしていた。 特に最後1時間ぐらいはほぼガチャをしていて、10,000〜50,000点ぐらいの振り幅があって、更に実際に入れた変更も2,3回やらないと実効性が分からないという状況だったのでとにかくベンチを回していた。
そういう意味でベンチマーカーのキューがバシバシ解消されたのはとても良くて最高だった。
最後40分ぐらいの段階で37,000点がでて、まだ回すべきか迷いながらとてつもなくしんどい思いをしながらもう一回回したら無事20,000点代が出て良かった。 その後残り20分ぐらいで最終スコア38,588点が出て作業終了。40,000ぐらいが本選ボーダーだと思っていたので結構しんどかった…。
まとめ
私自身はISUCON5から参加していて、今のメンバーはISUCON6から組んでやっていたものの、本選出場は初めてなのでとても嬉しい。 メンバーの半分が来年から社会人なので、学生枠の突破ではなく一般枠で突破出来たのは来年以降の希望が出来て良かったと思う。
今回はベンチマーク含め作業環境が非常に快適で、トライアンドエラーがしっかり出来た部分が良かったと思う。
本選での戦いは初めてなので善戦したい。100万狙うぞ!!!