みちくさを楽しむ

IT関係の雑多な内容の日記

ISUCON13にソロ参加した。

 

2023/11/25(土) に開催されたISUCON13に参加しました。

 

swamp というソロチームで参加して結果は32位でした。あと少しで30位だったので、少し悔しさが残りますがまずはFailではなくて結果を残せてよかったです。

あと、おそらくソロの学生という限られた母集団の中では2位かなと思います。(1位のtakonomuraさんには圧倒的差をつけられていますが笑)

 

前回のISUCON12も参加したので2回目の参加ではありますが、前回は外出先からの片手間の参加だったので、実質今回が初参加みたいなものでした。(前回は、mysqlの分割しただけで終わった)

 

今回は、最初の出だしは良くて、一瞬ですが4位になった時もありました!

isucon13の11:38時点の順位表のスクリーンショット

(うれしくてスクショ取りました)

しかし、途中のベンチが止まっている間にした変更で、エラーになってしまい、それの解消に時間がかかったのと、複数台構成にするときにつまってしまい、後半は全然スコアが伸びませんでした。

 

以下やったことの一覧です。(大体、やった順番)

  • getUserStatisticsのN+1の一部解消
  •  インデックスを貼る
  • タグをアプリに乗せる
  • アイコンをファイルに書き出してDBに挿入をやめる
  • usersテーブルにdark_modeカラムを追加する
  • ユーザーのキャッシュ
  • 新たに追加したngwordだけを対象にチェックする。
  • コメントを投稿した際の、ngwordsの判定をSQLを使わずにstrings.Containを使う
  • getLivestreamStatisticsHandlerのN+1の解消
  •  iconのsha256sumの結果のキャッシュ
  •  livestream_tagのキャッシュ
  •  userのキャッシュ
  •  dbを2台目に移行
反省

ドキュメントの読み込みが足りませんでした。特に、dns周りはドキュメントをちゃんと読めておらず、全く触ることができませんでした。また、IconのIf-None-Matchなどについてもちゃんと読めてませんでした。

また、セキュリティグループを意識しない環境で素振りなどをやっていたため、DB分割に時間がかかってしまったり、2台目にinitializeのリクエストを送る方法などで苦労したため、順位表凍結の前の段階から、最後までずっと2台構成にすることに時間を使ってしまいました。ここはちゃんと練習しておくべきでした。

 

ソロ参加ということで、素振りをやってみたり計測ツールを用意したりといった準備をして迎えましたが、まだまだ実力が足りないことがわかりました。来年からは社会人になり学生枠ではなくなりますが、次のIsuconに向けてもっと実力をつけたいなと思います。

最後になりますが、運営していただいた方に感謝を述べたいと思います。ありがとうございました。とても楽しかったです!