ISUCON 13 で1万点ぐらいでした #isucon
去年は出られませんでしたが、今年は ISUCON 13 参加しました。チームは moudameda です。いつもと名前もメンバーも違います。
最終ベンチマークでは1万点をちょっと超えたぐらいでした。おそらく。failed でなければ。最終スコア、公開されるかな?

16時までほぼ初期スコアだったので、現場のテンションとしては1万点でも十分満足な感じでした。
自分がやっていたことはというと、環境整備をして一息ついた12時頃から16時すぎまで、ほとんどの時間を GET /api/livestream/search の高速化に費やしていた気がします。実装力が足りなくてハマるハマる。
- sqlx での JOIN が分からず、あれやこれや。カラム名を
"users.id"とかにすればよかったんですね。 - JOIN するところで struct のフィールドには
db:"users"などと書けばよかったんですね。 - IN 句を使うときは
sqlx.Inで準備するんですね。- そこに
[]int64は渡せないから[]intにする必要があるんですね。
- そこに
あとはこの API が LEFT JOIN livestream_tags などして1クエリで書けるだろうと思いこんでしまったのも反省点。LIMIT 50 することを考えると、無理でしたね。
これが落ち着いてから、つまり16時過ぎにようやくインデックスを追加して、順番が逆だったなと思いました。
statistics 系や DNS 周りは他メンバーに頼んでました。あと終盤に moderate をなんとかしようとしたけど、道筋が立てられなくて時間切れ。DELETE 文の呼び出し回数がベンチーマーク走行中4万回近くて相当な負荷になってそうに思えたので、なんとかしたかったです。一方で icon は影響小さそうだなと思ってほぼ放置。
ISUCON 10 の予選突破の成功体験から、終盤まで各自のサーバーで色々試行錯誤して、17時過ぎに負荷分散を始める。というのが身についてしまって、今回はそうじゃないほうが良かったんだろうなと思いました。DNS サーバー、MySQL サーバーを早めに別々にしていたらどうなっていたか。
などと考えていたんですが matsuu さんの「mysqlを2台目に」が17時10分なので、あんまり関係なさそう。
とても楽しかったので、また来年も参加したいです。