ISUCON2017参加記

akenshoさんとli_sakuと参加、最終スコア20万3000点くらい。最高得点は21万5000点くらい。(よく覚えて)ないです。 1日目5位?で最終順位20位でした。2日目ありえん魔窟みが深い。18位まで通過なのでギリギリとはいえ予選落ちは予選落ちです。

1年前:

  • よすぽとぽてちと参加し、gitリポジトリを破壊して正の点数が取れず終了「なんやこのコンテストは...」

3ヶ月前:

  • けんしょーさん「GO言語勉強しといて」ぼく「この一年MySQLとかちょっと触ったしいけるやろw GO言語もアメリカ生活どうせ暇あるやろwやったろw」

3ヶ月間:

  • アメリカ観光サイコー

帰国後:

  • GO全然わからん(絶望)

1週間前:

  • みんなでPixiv ISUCONで初練習する。めたんさんのpixiv isucon攻略記を見ながらakenshoさんがちょっとずつ便利なもの準備してるのにli_sakuとだらだらする。結局GOがまともに書けず。最悪です。

数日前:

  • コドフェスと本戦日程被っていることが発覚。しゃあないけど予選は絶対楽しいし頑張りたいし、通ったら考えよ。

本番開始前:

  • GOの変数宣言の仕方さえ分からないけど読めるし雰囲気は分かる。大丈夫。

本番途中:

時系列は適当。実際チームでやったことたくさん他にあるけど僕が携わった部分ばっか頭に残ってるため許して。

  • ぼく&さく「けんしょーさんサーバー設定とチューニングよろです」 けんしょーさん「304とか返せる秘伝のたれ貼りました」
  • ぼく「なんか公開鍵周りがバグっててgitにpushできない(大騒ぎ)」さく「ちゃんとエラーメッセージを見て判断して」ぼく「すみません」
  • とりあえず静的配信のwebapp書き換えよろです←さくさんに書いてもらう
  • チーム「配信する画像のミラーリングとか辛いしまずはDB+(Webapp+nginx)の2台構成にしちゃいましょう」
  • 暇やしindex貼ろう
  • は?なんだこのsleepは!?消そ!
  • 既存のDBに入ってる静的ファイルデータを用意するコードがGOで書けない...せや! curl しちゃおw
  • やったー静的配信できたー。
  • チーム「nginx(主に画像配信),(nginx+webapp),DBの3台構成にしちゃいましょう」
  • ぼく「けんしょーさんpprofの使い方教えて(泣きつく)
  • けんしょーさん「なんかslowquery動かん」ぼく「コード読めば多分OK」
  • ちまちま/messageとか/fetchのN+1問題っぽいの破壊していく。13万点くらいになってきた〜
  • ん!?fetchは加点しないってなんや!sleep復活させるぞ!
  • スコア21万超えたワオ
  • なんか暫定3位やんけやったー
  • sleep2秒にしたろ!←7万点!?点数下がった!?なんで!?
  • sleep1秒に戻そ!←3万点!?ファーwww
  • チーム「これもうわかんねえな。どうせベンチマークが混雑してて仕方ないやつやろ。21万のときのwebappでガチャ引いていい点数出たらやめるか」
  • 三人は幸せな20万点を取って終了(予選落ち)

反省点:

  • 慢心と準備。
  • 遅くなったのはベンチマークが原因ではなく恐らく僕たちのサーバーのリソースが何か悪いことになってたのが原因なので原因解析もきちんとせず諦めたのは本当に本当にダメダメだったと思います。
  • nginxに詳しくなりたいね。
  • GOでFizzBuzzはおろかHello Worldさえ書けないのがやばい。

良かった点:

  • 基本的にほとんどバグらなかったのでベンチマークで胃が痛くなるとかがなかった。
  • Pixiv ISUCONで仕入れた知識が役に立った。
  • 解析ツールは便利。