tatsuru / isucon12-yosen

0 stars 0 forks source link

レギュレーション読み会場 #6

Open tkzwtks opened 2 years ago

tkzwtks commented 2 years ago
yashigani commented 2 years ago
429 Too Many Requestsについて
以下のAPIは、Retry-Afterを含めた429 Too Many Requestsを返すことが出来ます。

POST /api/admin/tenants/add
POST /api/organizer/competitions/add
Too Many Requestsを返した場合は、ベンチマーカーは点数を加算せずRetry-Afterの秒数待ったのちリトライします。
tkzwtks commented 2 years ago

https://gist.github.com/mackee/4320c18919c8f6f1867849378a17e651#%E5%8F%8D%E6%98%A0%E3%81%BE%E3%81%A7%E3%81%AE%E7%8C%B6%E4%BA%88%E6%99%82%E9%96%93%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

POST /api/organizer/competition/:competition_id/finish 以下のエンドポイントは上記APIの情報の反映まで、レスポンスを返してから3秒の猶予が許容されます GET /api/organizer/billing GET /api/admin/tenants/billing POST /api/organizer/player/:player_name/disqualified 以下のエンドポイントは上記APIの情報の反映まで、レスポンスを返してから3秒の猶予が許容されます GET /api/player/:player_name GET /api/player/competition/:competition_id/ranking GET /api/player/competitions```

tkzwtks commented 2 years ago
ベンチマーカーの認証について
ベンチマーカーはblackauthを利用せずに、ベンチマーカー自らがJWTを発行してリクエストを行います。よって、blackauthは負荷走行時に利用しません。

しかし、提供されているWebフロントエンドはblackauthが提供するエンドポイントを利用しているため、運営の目視による追試の際に必要なので停止しないでください。
yashigani commented 2 years ago

スコア計算 https://gist.github.com/mackee/4320c18919c8f6f1867849378a17e651#%E3%82%B9%E3%82%B3%E3%82%A2%E8%A8%88%E7%AE%97

tkzwtks commented 2 years ago

忘れそうなので注意する

MySQLのデータについては、/home/isucon/webapp/sql/admin/ 以下にインスタンス作成時点のdumpファイルがあります。POST /initialize や init.sh ではこのdumpファイルは使用されません。
tkzwtks commented 2 years ago

課金計算

大会ごとの請求明細
大会閲覧者数とは、スコア登録をしたプレイヤー以外で大会情報を閲覧した人です。大会ごとの請求額は、スコアを登録した人1人あたり100円、大会閲覧のみした人1人あたり10円で、合計金額が請求額となります。

大会が未完了の場合は0人(0円)になります。大会が完了しているかどうかのステータスは [大会一覧](https://isucon.t.isucon.dev/organizer/competitions) 画面を参照してください。
tatsuru commented 2 years ago

これ罠になるかも https://github.com/tatsuru/isucon12-yosen/blob/a804c67631b66b363d42b1e93c77b237c1d16f56/webapp/go/isuports.go

    // NOTE: 先にadminDBに書き込まれることでこのAPIの処理中に
    //       /api/admin/tenants/billingにアクセスされるとエラーになりそう
    //       ロックなどで対処したほうが良さそう
tatsuru commented 2 years ago

visit_history でかい問題

ってやってるだけなので、やることはこういう感じかな

やってみる

mysql> ALTER TABLE visit_history ADD INDEX `tenant_id_competition_id` (`tenant_id`, `competition_id`);
Query OK, 0 rows affected (19.51 sec)
Records: 0  Duplicates: 0  Warnings: 0

=> insert 遅くなるので逆に遅くなる