ISUCON13 参加記 (Maxif. Asa 視点)

isuconwebcompetitive programmingparticipation log

作成日 / 最終更新日

Table of Contents

Loading...

ISUCON13 (新しいタブで開く) に参戦しました!参加記です。
雑に書きます。何か気になったら Twitter (新しいタブで開く) で聞いてください。

きっかけ

2022 年の終わりごろ、ISUCON やりたい!と sor4chi (新しいタブで開く) と話していたので来年やる!で参加しました。
ICPC Regional と被ってしまっていたが、無事 (?) にあと少しのところで ICPC 予選落ちしたので参加できました (かなしい)
チームメンバーがあと 1 人だったので、いとこの Ryoga.exe (新しいタブで開く) を誘ったら快諾だったので 3 人で参加。

Maximum 内でほかに誰もいないかな~と思ったけどさらに 6 人 (2 チーム) 参加することに!

練習

何回かやりました。覚えてないです。

当日

自分の担当したところしか書きません。ほかの人視点はこっち。

実際に使った作業用リポジトリ: sor4chi/isucon13 (新しいタブで開く)

起床成功

がんばるぞい!

ちなみにチーム紹介スライドはこんなかんじ。

チーム紹介スライド
チーム紹介スライド

動きます。カオス。深夜テンション。
「IMAGINE THE FUTURE.」は Ryoga.exe の筑波大学で、自分の「Create the future」は自分の古河中等の校訓。
そこに sor4chi が「HIMAZIN THE FUTURE」でのっかってきたかんじ。

問題

動画配信サイトかぁ。直前に YouTube 配信が重いみたいな不具合があり、伏線!?になってた。
コメント欄でも同じ感じのリアクションしてた人がいた。

競技

時系列順です。

ぞい!

まずマニュアルを読む。
DNS 水責め攻撃あるってまじ?
これなおそっと (みんな DNS わからんになってたので、ちょっと知ってる自分が担当することになった)

DNS TTL 設定

ん、レコードの TTL 0 になってるじゃん。
3600 に直しておく。
/etc/powerdns/pdns.conf 見た感じだとまだ TTL 0 になってるやん!
直しておいて、ついでにログも出さないようにした。

得点はそれほど上がらなかったものの、 DNS 名前解決件数が 5 倍くらいに増えた。

サーバー分割

DNS 水責め攻撃があるらしいので、 DNS サーバーは分けておきたいという話になり、分けた。
ついでに App, DB も分けた。

こんな感じの構成

わけた。

PowerDNS には API があるので、 s2 から HTTP リクエスト投げてレコード追加するようにしてた。
(該当部分: https://github.com/sor4chi/isucon13/blob/9ca38e10a60348c811e242da8f07a77f06352550/go/user_handler.go#L277-L299 (新しいタブで開く))

ふつうならここで爆増するはずなんだけど (適当)、全然スコアは上がらず。
名前解決件数は爆増してるのに...。

いろいろやっても 5,000 点くらいをさまよい続けてる。全然かわらず。
13 時半くらい。

DNS DB の index をはる

DNS の DB に index がなかったので、 index をはった。
名前解決件数が爆増した。 17 万件くらい。
(最終結果だと名前解決数 1 位のチームが 18.85 万件だったらしいので、普通に射程圏内だった。おしい。)

App の index をはる

いろいろ見てみると、ふつうに App DB に index がちゃんと貼られてなかった。
得点が全然上がらなかったのはこのせい。

index をちゃんと貼った。22687 点。
暫定 11 位。わーい!

もぐもぐたいむ

15 時くらい。一段落ついたのでもぐもぐたいむ。

画像のキャッシュ

sor4chi が途中まで書いていたのを引き継いで、画像のキャッシュを実装。
いろいろやって 3 万点。

さらに index 貼ってちょっとあがった。

WHERE IN -> WHERE EXISTS

WHERE IN が遅いので WHERE EXISTS を使うように実装。
なんで遅いかはググってください。自分も CodinGame Summer Challenge 2023 で知った。
ベンチ回すと 32,130 点。
凍結されてる!緊張!

画像キャッシュ修正

画像がキャッシュされてたのに、またクエリ発火してるのに気づいた。
38,578 点。何位になってるかめちゃくちゃ気になる!

最後の作業

ログ閉じして 5 万点に載った!

サービスも止めたら残り 10 分のところで fail した。
なんとか直したけど心臓止まるかと思った...。

反省点

結果

そうこうしているうちに結果発表。

再起動試験落ちなくてよかった~~
え、 25 位!!?

とてもうれしいです。何気に初参戦で 30 位以内に入れた!
しかも学生チーム 5 位で、しかも有名なチームを割と抜いてるっぽい!

TOP 30 にはいろいろ賞品がもらえるらしく、ほんとにありがとうございます...!

来年は反省点を生かしてもっと上位を目指したい!
運営の皆さん、戦っていただいたみなさん、ありがとうございました!

ICPC 運営 or ISUCON 運営の方へ: 来年はかぶせないでください