Home - bianchiidentity/isucon12 GitHub Wiki

ISUCON12 練習ガイド

接続URL(ホストPCから開く)

用途 ホストPCから開くURL 備考
pprotein 計測ダッシュボード http://localhost:9000/ CPU・HTTPログ・SQLログの収集と表示
SaaS管理者 https://admin.t.isucon.dev/ テナント追加・テナント横断の請求確認
テナント isucon https://isucon.t.isucon.dev/ 管理者モード・参加者モード
テナント kayac https://kayac.t.isucon.dev/ 別テナントでの動作確認
pproteinの収集先設定 http://localhost:9000/api/group/targets 現在の収集先をJSONで表示
CPUプロファイル一覧 http://localhost:9000/api/pprof JSON。通常はダッシュボードから閲覧
HTTPログ集計一覧 http://localhost:9000/api/httplog JSON。通常はダッシュボードから閲覧
SQLログ集計一覧 http://localhost:9000/api/slowlog JSON。通常はダッシュボードから閲覧
alp設定 http://localhost:9000/api/httplog/config 現在のHTTP集計設定
slp設定 http://localhost:9000/api/slowlog/config 現在のSQL集計設定

ログイン用アカウント

パスワードは不要です。参加者IDはマニュアルの初期データ例です。

ログイン先 役割 アカウントID・画面での操作
admin.t.isucon.dev SaaS管理者 アカウント名を変更せず「認証する」
isucon.t.isucon.dev テナント管理者 右上の「テナント管理者モードに切り替える」。ID入力不要
isucon.t.isucon.dev 参加者 アカウントIDに 0001 を入力して「認証する」
kayac.t.isucon.dev テナント管理者 右上の「テナント管理者モードに切り替える」。ID入力不要
kayac.t.isucon.dev 参加者 アカウントIDに 0002 を入力して「認証する」

https://localhost/ と公開IPの直打ちはアプリ用URLとして使わない。 管理者・テナントの判定にHostヘッダーが必要で、nginxの既定サイトは404を返す。 ブラウザーで証明書警告が出る場合は、練習用TLS証明書と手元の信頼設定を確認する。

ログインAPI(ブラウザーでは画面の認証操作を使う)

役割 POSTするURL
SaaS管理者 https://admin.t.isucon.dev/auth/login/admin
テナント管理者 https://isucon.t.isucon.dev/auth/login/organizer
参加者 https://isucon.t.isucon.dev/auth/login/player?id=0001

これらもホストPCの443番の転送を利用する。/auth/ 自体はログイン画面URLではない。 0001 はマニュアルの初期データ例。認証の仕組みは アプリの仕組み を参照。

収集開始API(ホストPCから実行できる)

curl --fail http://localhost:9000/api/group/collect

このGETは設定された3種類の収集を開始する。設定・一覧を読むAPIとは異なり、計測を実行する。 ベンチに「負荷走行を開始します」が出たタイミングで実行する。計測と記録の手順。

接続先・コード・Wiki

用途 接続先・URL
SSH ssh -i ~/.ssh/isucon.pem -o IdentitiesOnly=yes [email protected]
EC2公開DNS ec2-18-183-156-199.ap-northeast-1.compute.amazonaws.com
作業リポジトリ bianchiidentity/isucon12
Git SSH [email protected]:bianchiidentity/isucon12.git
このWiki Wiki Home
Wiki Git SSH [email protected]:bianchiidentity/isucon12.wiki.git
初期状態タグ initial-state

公開IP・DNSは2026-10-10時点のEC2メタデータから確認。EC2の停止・起動等で変わる場合がある。

サーバー内部の接続先(追加の転送なしではホストPCから直接開かない)
対象 サーバー内部の接続先 用途
Goアプリ http://127.0.0.1:3000 nginxの転送先。APIアクセスには適切なHostが必要
blackauth http://127.0.0.1:3001 nginxの /auth/ 転送先
アプリCPUプロファイル http://127.0.0.1:6060/debug/pprof/profile?seconds=60 pproteinが収集するGoアプリ本体のCPUプロファイル
アプリpprof一覧 http://127.0.0.1:6060/debug/pprof/ Goのプロファイル一覧
HTTPログ収集agent http://127.0.0.1:19000/debug/log/httplog?seconds=60 収集開始以降に追加されたnginxログ
SQLログ収集agent http://127.0.0.1:19000/debug/log/slowlog?seconds=60 収集開始以降に追加されたMySQLログ
MySQL mysql://127.0.0.1:3306/isuports DB接続先の表記。ブラウザー用ではない
Redis redis://127.0.0.1:6379 Redis接続先。ブラウザー用ではない

6060・19000・DBのポートは今回のホストPCへの転送対象ではない。 CPU・ログはpproteinの9000番から収集・閲覧できる。

練習ガイド

実画面のスライドで見る:大会運営の流れ・ブラウザE2E — テナント作成から請求・失格まで、8枚で確認できます。

ISUPORTSは、団体ごとに大会・参加者・ランキングを管理するサービス。練習では、挙動を保ちながら処理性能を上げる。

2022年のマニュアル2本を、練習中に参照しやすい順に要約しています。当時の競技条件と現在の練習環境は区別してください。

最初に覚える5つ

  1. テナント=利用団体。 団体ごとに管理対象が分かれ、ホスト名でアクセス先が変わる。
  2. 管理者が大会とスコアを登録し、参加者が見る。 大会終了後はCSVを入稿できない。失格者の参加者向けAPIは403になる。
  3. ベンチは初期化 → 互換性チェック → 60秒の負荷走行。 初期化は30秒でタイムアウトする。
  4. エラーを減らすことも性能改善。 通常エラー1件で1%、Criticalエラー1件で10%減点される。
  5. 再起動しても動くこと。 当時の追試は再起動後のベンチ、データの永続性、ブラウザの挙動も確認する。

やりたいことから読む

やりたいこと 読むページ
登場人物・操作・ログインを理解する アプリの仕組み
15〜30分で処理・DB・改善候補を把握する アプリ全体の地図
仕様と実行ログから負荷試験の狙いを考える 負荷試験の観点
得点・エラー・反映猶予・初期化の条件を確認する ベンチと改善時の制約
この練習環境の構成・初期データを確認する リポジトリREADME
サーバー構成・変更反映・サービス操作を確認する サーバー運用
初回スコアとベンチの実行条件を確認する 計測記録
計測して、時刻・変更内容・スコア・Issueを残す 計測記録
初期状態・データの復元方法を確認する 初期状態と復旧

練習の進め方(このWikiでの提案)

現状を計測 → 遅い箇所を調べる → 変更 → 再計測 → 再起動後も確認。

変更内容・スコア・エラー・計測条件を一緒に記録すると、次の判断で過去の作業を思い出す負担が減ります。区切りでブラウザ表示とデータの保持も確認します。この進め方は原文の規則ではなく、練習用の提案です。

原文

2026-10-10に確認。細かな判断では原文を優先し、現在のサーバー設定は実環境で確認してください。

⚠️ **GitHub.com Fallback** ⚠️