投稿日: 2022-07-25
ISUCON12の予選にチームRakuで参加しました。メンバーは友人(同僚)のLeoと自分の2人です。最終スコアは3746で、278位でした。
まったく手が出なかった去年と比べると、なんとなくやることは分かって戦えた感じがしたのでうれしかったです。事前に練習したことと、当日の結果について書こうと思います。
去年の参加記はこちら: ISUCON11予選参加記 - tecchaxn's blog
練習は、isucon11予選とprivate-isuを使って合計3セットしました。コツをつかめたのはprivate-isuで練習していたときです。alpとpt-query-digestで計測して、alpで重たいエンドポイントを見つけ、アプリまたはDBを改善し、計測結果が改善したらスコアが伸びるという流れがつかめました。
チェックリストはNotionで作成しました。初動は意外とやることがたくさんあるので、作っておいてよかったです。
もう一つ便利だったのはMakefileです。サーバーのセットアップ、設定ファイルの取得・デプロイ、ベンチ前のログローテート、ログの解析などのコマンドを作成しました。MakefileはtraPさんのハンズオンを参考にさせていただきました。
リポジトリはこちらです。tekihei2317/isucon12-qualify
初動は以下のように分担しました。
dockerでアプリケーションが動いていることと、sqliteが使われていることに戸惑いつつ、初動は1hくらいで終わりました。
11:00過ぎに合流して、アプリケーションの仕様とスコアの計算方法について一緒に確認しました。今年のスコアの計算方法はリクエスト数ベースで分かりやすかったです。
その後は2人に分かれて改善していきました。改善できたのは主に以下の3つです。
最初にMySQLの負荷が大きいことに気づいて、改善できたのが良かったです。sqliteのクエリログの分析をせずに、解析を進めたのがあんまり良くなかった気がします。SQLの改善をしたものの、講評を聞いたところボトルネックはクエリではなくDBのロックだったみたいです。
まだまだ動きやスコアに伸びしろがあるものの、練習も含めて楽しめたので良かったです。なによりやりきった感があり満足しています。今年の問題が解けるようになったら再挑戦するのと、また来年も参加したいと思います。