feature image

2026年11月3日 | ブログ記事

ISUCON2026に参加して学生2位でした

チーム[object Object]として、@cp20 と一緒にISUCON2026に参加しました。
最終スコアは 211,213 点で、学生2位、全体36位でした。

嬉しいという気持ちもありつつ、もっと上に行けたという悔しさも残る結果でした。

この記事では事前の準備、当日の話、終わってからの振り返りを書きます。

ちなみに @cp20 視点のブログもあるので、ぜひ読んでみてください。

ISUCON2026 に AI Agent と出て学生2位でした — しぴろぐ
チーム [object Object] の ISUCON2026 参加記です。前日までの準備、当日の8時間、取り逃した freee 賞、そしてちゃんと検証して24倍速くした JPEG の話を書きます。

事前準備

今回は人間はコードを読み書きせず、基本的にAIに解かせるための準備をしていました。
ISUCON用のテンプレートリポジトリを作っておき、必要なツールやskill、知見を集めておきました。

AIが今何をしているかをDiscord上で可視化する仕組みや、ベンチマーク結果のずんだもんによる実況を @cp20 が用意してくれました。

練習

本番前に過去問を何度か解きました。

ISUCONのアプリは、チューニングしていくと読み取りは全部メモリ、DBは永続化のためだけの書き込み先に行き着き、最後はベンチマーカーがボトルネックになります。

そのため、「N+1をSQLで直す」のような、最終形で捨てる手に時間を使わず、最初から全部メモリに載せる形を目指すのを基本的な作戦としていました。

当日

序盤

今年の問題はISURealというBeRealっぽいSNSでした。
投稿できる時間が決まっているアプリなので、その瞬間にリクエストのスパイクが来そうだなとかを話していました。

序盤はテンプレートの初動skillで、計測を入れてインデックスなどの定番の手を入れていきました。

人間は裏でマニュアルを読んだり、ブラウザ上の動作を見ていたりしてました。このとき今年はDBがPostgreSQLなことに気づき少し焦っていました。

例年MySQLだし今年もMySQLだろうと思っていて、テンプレートのツールもMySQLにしか対応していなかったのですが、AIがその場でツールを直してくれたので、あまり時間を捨てずに済みました。

方針決め

まともにベンチマークが回り始めたところでシナリオ分析をし、リージョンごとのリクエスト数の特徴や、ユーザー数が増える要素をなんとなく把握しました。

今回の問題ではリージョンをまたいで結果を反映させなければいけないデータがあったため、基本的にDBからデータを読む方針にしました。今思うと、インメモリキャッシュを前段に置くとかしてもよかったかもしれないです。

リージョン間のRTTを大きめにして、かつデータの即時反映を求めることで、メモリに載せづらい問題を作る作問側が素晴らしいと思いました。

中盤

中盤はとにかくAIにお任せしていました。
事前にいろいろと知見をまとめてはいましたが、なかなか大きな点数の改善は無く、いつものISUCONのように地道に点数を上げていくことになりました。

この時人間は

などしていました。

JPEGの検証が重い

投稿されたJPEG画像の検証がアプリのCPUを食っていてずっと苦しめられていました。

標準ライブラリで画像を丸ごとデコードして、サイズを確かめているだけの処理なのですが、受け入れるか拒否するかの結果は元の実装と同じにしないといけない(と思っていた)ので、手抜き実装は避けていました。
最終的には初期実装から1桁以上高速化していました。CPUの分岐予測を気にしながらアセンブリも使って書いていたので、だいぶ頑張ったと思います。(頑張ったけど、今回はサボってもレギュレーション違反には当たらなかったらしい?)

PostgreSQL が OOM で落ちる

途中で PostgreSQL が OOM で何度も落ちることがありました。

europeとamericaのアプリはDBの接続をRTTの100ms間ずっと持っているため、接続待ちが大量発生していました。そこで、接続数を増やしたら今度はDBのメモリが足りなくなって落ちてしまいました。

どうしたものかと困っていたのですが、pgbouncerなるものがあると知り、これでOOMを解消し、スコアも大きく伸ばすことができました。

やらかし

画像がDBに入っていて重かったためファイルに置くようにしたのですが、初期化のときに走行中の画像を消す処理を入れ忘れていました。ベンチを回すたびにディスクの空きが減っていきます。

それに気づいたタイミングで溜まりに溜まった画像をAIに消させたのですが、この時初期データの画像まで誤って消してしまいました。

結果、初期画像を書き戻すまでの15分程、まともにベンチを回せませんでした。かなりもったいなかったです。

終盤

終盤は200k前後で点数が伸び悩んでいました。途中まではずっとDBが重かったのですが、最後はアプリがボトルネックとなり、JPEGの検証、asia1のディスクの詰まりが解決しないまま競技終了が近づいてきました。

終了1時間前あたりで再起動試験skillを回し、ログや計装を切るのと、意味があるかわからないけれどmitigations=offを入れて終わりました。

これで 211,213 点を出して終了しました。最後のベンチマークは結構上振れを引いたかもです。

振り返り

freee賞を狙っていたのですが、取れず。残念。

1位のチームはAIだけで8時間自走させていたみたいです。
うちのチームもAIをだいぶ使っていたつもりでしたが、人間が都度指示しているようでは遅かったですね。前時代のISUCONにとらわれていたかもしれません。

そして、終わってから実はサーバーのスペックが違っていたことを知りました。

最初にちゃんと確認するべきだった...

振り返ってみると、練習の成果が良くも悪くも反映された結果だったと思います。
ただ、AIがここまで解けるようになると今後は練習の形も変わる気がします。作問するところから始まるのかも。

traP内でもISUCONの問題を作って解きあうなどして盛り上げていきたいと思いました。来年も開催されるといいな。

運営の皆さん、楽しい問題をありがとうございました!

pirosiki icon
この記事を書いた人
pirosiki

23B。SysAd班でがんばってます

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2024年12月18日
ISUCON14にツールの力で勝ちたかった
mazrean icon mazrean
2023年11月26日
ISUCON13にツールの力で勝ちたかった(mazrean)
mazrean icon mazrean
2021年9月21日
ISUCON11 traP CM制作についての小話
dan_dan icon dan_dan 他
2024年12月18日
ISUCON14感想戦で40万点超えました
mazrean icon mazrean
2023年11月26日
【 #ISUCON 】 最近の若者は ssh しないらしいですよ
ikura-hamu icon ikura-hamu
2022年7月24日
ISUCON12に向けてダッシュボードを自作してログを可視化しました
Ras icon Ras
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記