ISUCON13参加記

ISUCON13に参加しました。チームは去年と同じで、blue最高!でした。目標は初期状態からスコアを有為に改善するでした。(去年は改善できなかった挙げ句、環境を壊して初期状態出だしたため

メンバーと役割

saikou9901

主にアプリケーションコードを修正する

blue

データベース係

blue_jam

ICPCのスタッフをやるため、14時すぎに行動開始) ベンチの結果を解析して、改善する場所を提案する

言語と使ったツール

  • Go
  • VSCode +Liveshare(サーバー上で動かす
  • pt-query-digest

練習と作戦会議

ISUCON本に目を通した。(完全に理解をしたわけではない

さくらのクーポンへの案内がなかなかなかったので、デスクトップに環境を立てて、ラップトップから操作をする練習を一人でした。

練習したのは、

  • private-isu
  • ISUCON11予選
  • ISUCON12予選

で、1台構成で行けるところまでやった。

作戦会議では、去年の上位陣の参加記を参照して、どうするか決めた。去年との主な変更点は、

  • VSCodeをサーバー上で動かして、動いているアプリケーションのコードを直接変更する
  • pprofを使う(なお去年はJavaだった

あと、一番大事なこととして、ICPCと被っている都合上、半分ぐらい参加できないことを話した。

さくらのクーポンが手に入ってからは、一回みんなでサーバーのセットアップを試したり、共同編集の練習をした。

当日

9:30

みんなでDiscordにつなぐ。自分はすでにICPCの会場準備をしていたので、イヤホンを片耳に指して他のメンバーが話しているのを聞いていた

10:00

ISUCONは始まったが、自分は続けてICPCの準備をする。チームメイトがサーバーにちょっとした変更を追加してベンチを走らせた結果、ベンチが失敗しているっぽくて大変そうだった。

12:30

ICPCの受付業務に専念するため、Discordから完全に撤退する。

ICPC参加者のメンバーが全員揃っているか、必要なものをちゃんと持っているか確認をしていた。

14:00

受付業務が終わったので、宿泊しているホテルに移動し、作業に参加する。

まず、スロークエリログの設定が1秒になっていたので、それを0にしてベンチを走らせてもらう。

saikou先輩がgetUserStaticsHandlerのN+1を解決しようとしていて、エラーで悩んでいたので、手伝って直す。3981点

スロークエリログを解析したらADMIN PREPAREが一位になっていたので、interporateをONにしてもらう。

スロークエリログを解析して、livestream_tagslivestream_idにインデックスを張ってもらう。5674点

スロークエリログを見て、iconsuser_idにインデックスを張ってもらう。8191点

saikou先輩がmoderateHandlerをいじる(内容はよく把握していない)。9901点

ここまでをやって大体17時ぐらいだった。blue先輩がランキングの計算をSQLを使って頑張ろうとしていたがうまく動かずに断念した。

スロークエリログを止めて最後に再計測して10414点。

感想

目標のスコアを改善するは達成できたので良かった。次はnginxのアクセスログをちゃんと解析したり、データベースにインデックスを張る以上の改善をしたい。

次回はちゃんとスケジュールを確認して、多方向に迷惑をかけないようにしたい。(といいつつ、打ち上げのスケジュール調整で、ダブルブッキングをしてしまったが)