ISUCON8予選に参加して800点程届かず敗退しました

はじめに

9/16に開催されたISUCON8予選の2日目に@tkuchiki,@hilotterと チーム「流れ弾」として参加してきました。

結果は800点程届かず19位と、とても悔しい結果となりました…😿

とはいえ、これが実力なのでこれからまた精進したいと思います

来年のために今回どんなことをしたのかメモしておきます

準備編

チームメンバーがそれぞれ別の職場なので1週間前に1回集まって練習をしました。

ISUCON7の予選問題をConoHaを使って解いて懸念点を洗い出しました

  • ここまでは開始1時間以内に終わらよう
  • docker-composeでDBとCacheはすっと起動できるほうがよい
  • deployツールは予めある程度用意しておこう
  • etc…

など色々準備しておくことが洗い出されて、やってよかったなと思います。

欲を言うならもう少し前にやっても良かったかなと思います

あとは事前にやる事と担当者を決めて当日迷わないようissueを用意するなどしました

img

当日

自分と@hilotterがアプリの改修 @tkuchikiがインフラ周りを担当しました

覚えている限りの事を時系列で

  • みんなで採点基準を朗読
  • @tkuchikiがh2oを使い慣れたnginxに
  • 自分と@hilotterでアプリ触りながらコードリーディング
  • @tkuchikiが実装をPerlからGoに変更
  • ベンチを実行
  • alpで集計するとtopと/api/user/:idページが重いのが分かる
  • 自分がトップページを@hilotterがuserページを担当することに
  • 手元に確認できる環境を準備して作業開始
  • 最初はgetEvents/getEventをどう修正するか考える
    • 考えながらこれいるのか? と思いながらインスペクタ表示しながらアプリさわるとreservationsが使われてなさそうな雰囲気を感じた
    • @hilotterもユーザーページではイベントの予約情報がいらなそうな雰囲気を感じていた
    • 返さなくてもよかったのでその方針で実装
  • この間@tkuchikiはmysql5.7に変更
  • それぞえの修正をマージして3,4000点
  • ここでお昼過ぎぐらいだった記憶
  • ベンチかけて/api/event/:idが支配的だったので修正にとりかかる
  • pt-query-digestで@tkuchikiがログをチェック
  • 結果から@tkuchikiと@hilotterがgetEvents/getEventを直しにかかる
  • 自分は四苦八苦しながらイベント詳細を直す
  • バグに嵌り出来たのが16:00ぐらい
  • この修正で7000点くらい
  • @tkuchikiと@hilotterがgetEvents/getEventとまだ戦っていた
  • 図らずも自分の修正が他のところにも使えそうなのでメソッド化して対応
  • ここで1万点ぐらい
  • スコア見たらadminが重くてadminも修正しはじめた
  • ここで17:00過ぎて他のチームのスコアが見れなくなった
  • adminが重い部分をメソッド化したやつ置き換えていく
  • 平行して@tkuchikiが複数台構成に
  • で 17:20に1.5万、 17:40に2万 とあがっていく
  • ここでベンチが通ったり通らなかったりで時間が取られる
  • ベンチ結果みると予約に時間かかってるぽいので ORDER BY RAND を直そうとするもここで時間切れ
  • 最終ベンチで 3万3000 のベストスコア
  • これで点数残そうと思いこれで終わりかなと思ったところに@tkuchikiが駆け込みベンチ投入w
    • あ…w
  • 最終ベンチの結果を見れずに終了
  • 結果3000点アップして3万6000点で19位フィニシュ

今回は昨年のように何も出来ず終了という感じではなく、ボトルネックを着実に潰していくことが出来たので良かったですね

手元に環境を作れたのが大きかったのではないかと思います

最後 1時間でガンガンスコアが上がっていく感じはアドレナリンが出まくりましたw

しかし、実装のちょんぼだったりで時間が取られたのが本当に悔やまれる

最後何回かベンチを回したら結果が変わったのかもしれないが勝負は時の運、運も実力の内ですね

ということで来年に向けて精進しようと思います

さいごに

ISUCON8運営の皆様、今年もとても楽しい濃密な時間を過ごせました!!

ベンチも快適で本当にありがとうございました!!